Django-安装/分组命名/路由分发
一、安装Django
命令行窗口:

pycharm安装:

二、创建Django项目
命令行窗口创建项目:

访问地址:

表示访问成功
注意如果我们在命令行窗口创建的应用需要我们手动的在django的settings配置文件中注册你添加的应用:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01.apps.App01Config',
# 'app02.apps.App02Config', # 注册应用
'app02', # 可以简写
]
pycharm创建项目:

三、简单的web
第一步:urls.py写正则和对应的函数
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^login/', views.userlogin), # 匹配用户输入的url,拿着匹配的url调用对应的方法
]
第二步:views.py视图函数,写逻辑,将匹配到的html页面发送给前端
from django.shortcuts import render,HttpResponse # Create your views here.
def userlogin(request):
# return HttpResponse("文章") # 返回文本字符串
return render(request,"login.html") # get请求,返回html页面
get请求返回html页面
from django.shortcuts import render,HttpResponse # Create your views here.
def userlogin(request):
# return HttpResponse("文章")
if request.method == "GET": return render(request,"login.html")
else:
user = request.POST.get("username") # 拿到用户提交的用户名和密码
pwd = request.POST.get("password")
print(user,pwd)
return render(request,"login.html")
post请求返回html页面
from django.shortcuts import render,HttpResponse # Create your views here.
def userlogin(request):
# return HttpResponse("文章")
if request.method == "GET": # 判断是什么请求 return render(request,"login.html")
else:
user = request.POST.get("username")
pwd = request.POST.get("password")
print(user,pwd)
if user =="chao" and pwd == "": # 判断密码是都正确
return render(request,"successfully.html")
else:
return HttpResponse("") # 密码错误返回404

html文件接收参数的格式:

效果:

第三步:templates 文件夹里面创建要返回的html文件

补充说明
# 是否开启URL访问地址后面不为/跳转至带有/的路径的配置项
APPEND_SLASH=True
Django settings.py配置文件中默认没有 APPEND_SLASH 这个参数,但 Django 默认这个参数为 APPEND_SLASH = True。 其作用就是自动在网址结尾加'/'。其效果就是:我们定义了urls.py:
from django.conf.urls import url
from app01 import views urlpatterns = [
url(r'^blog/$', views.blog),
]
访问 http://www.example.com/blog 时,默认将网址自动转换为 http://www.example/com/blog/ 。
如果在settings.py中设置了 APPEND_SLASH=False,此时我们再请求 http://www.example.com/blog 时就会提示找不到页面。
四、分组命名匹配
无命名分组:
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^login/(\d{4})/(\d{1,2})', views.userlogin),
] # 按照位置将匹配的参数传给userlogin函数
from django.shortcuts import render,HttpResponse # Create your views here.
def userlogin(request,year,month):
return HttpResponse(year+month)
命名分组:
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^login/(?P<year>\d{4})/(?P<month>\d{1,2})', views.userlogin),
] # 给匹配的字符进行命名
from django.shortcuts import render,HttpResponse # Create your views here.
def userlogin(request,year,month):
return HttpResponse(month+year) # 函数要想取值,必须用命名分组的名字进行取值,
视图函数的默认值:
from django.shortcuts import render,HttpResponse # Create your views here.
def userlogin(request,year,month=""): # 没给传参就用默认的值
return HttpResponse(month+year)
五、路由分发
include路由分发
一个项目中可以有许多应用程序
例如微信这个项目,有语音功能、视频功能、发朋友圈的功能等等;
views和models文件是不是都放在每一个app应用里面了啊,而urls.py这个文件放在哪了,是不是放在项目文件夹里面了,说明什么,说明是不是所有的app都在使用它,如果你一个项目有10个应用,每个应用有100个url,那意味着你要在urls文件里面要写多少条url对应关系,并且所有的app的url都写在了这一个urls文件里面啊,这样好吗,当然也没有问题,但是耦合程度太高了,所以django在url这里给你提供了一个分发接口,叫做include
总路由:
from django.conf.urls import url,include
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^app01/', include("app01.urls")),
url(r'^app02/', include("app02.urls")),
] # 用户访问http://127.0.0.1:8000/app01/index/1234 会被自动分配到app01的urls中去匹配index/1234,如果存在则执行对应的函数
app01中的urls:
from django.conf.urls import url,include
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^index/(?P<year>\d+)', views.index),
] # 匹配用户输入的内容并执行对应的函数
app01中的viesw:
from django.shortcuts import render,HttpResponse # Create your views here.
def index(request,year,month=""):
return HttpResponse(month+year) # 接收命名分组的参数,如果用户没有输入就用默认值

实际上就是总路由接收用户的请求来判断这个请求到底属于哪个应用程序的,匹配成功后分别执行自己对应的函数
六、配置django让别人可以访问自己的服务器
1、查看自己的ip地址

2、点击Edit

3、输入ip地址保存

4、配置settings

注意:需要关闭防火墙
Django-安装/分组命名/路由分发的更多相关文章
- Django框架02 /Django下载安装、url路由分发
Django框架02 /Django下载安装.url路由分发 目录 Django框架02 /Django下载安装.url路由分发 1. django下载安装 2. pycharm创建项目 3. 基于D ...
- day56——http协议、MVC和MTV框架模式、django下载安装、url路由分发
day56 昨日复习 今日内容 HTTP协议 网页:https://www.cnblogs.com/clschao/articles/9230431.html 老师整理的重点 老师整理的重点 请求信息 ...
- django之路由分组,路由分发,FBV,CBV,ORM框架
今日的内容: a. 路由系统 1. 创建app 2. 路由的分组 3. 路由的分发 - 正则表达式匹配 b. django的orm(模型model) 1. 创建模型的步骤 2. orm基本的增删改查 ...
- django 框架下的路由分发
- stark组件之路由分发【模仿Django的admin】
一.先看下django的admin是如何进行路由分发的 1.先看下django的admin的url路径有哪些 其实很简单,假如有一个书籍表,那么每张表对应四个url,增.删.改.查 查看的url ht ...
- django系列3.1--url路由配置, 正则, 分发include, 分组命名匹配
一.url配置 在django项目中urls.py文件中就是为这个url调用的view(视图)函数之间的映射表,来配置访问的一个url执行什么代码 默认的基本格式: from django.conf. ...
- Django框架(四)-- 路由控制:有名/无名分组、反向解析、路由分发、名称空间、伪静态、APPEND_SLASH、不同版本的Django区别、Django虚拟环境搭建
路由控制 一.简单路由配置 url(r'^booklist$', views.booklist) 第一个参数是正则表达式,第二个参数是视图函数 每个正则表达式前面的'r' 是可选的但是建议加上.它告诉 ...
- HTTP协议 django下载安装 url路由分发
今日内容 HTTP协议 MVC和MTV框架模式 django下载安装 django的url路由分发 HTTP协议 http协议 请求信息格式 GET / HTTP/1.1 请求行 Host: 127. ...
- [Django框架之路由层匹配、有名 无名分组、反向解析、路由分发、名称空间、伪静态、本地虚拟环境、django版本区别]
[Django框架之路由层匹配.有名 无名分组.反向解析.路由分发.名称空间.伪静态.本地虚拟环境.django版本区别] 路由层 路由即请求地址与视图函数的映射关系,如果把网站比喻成一本书,那路由就 ...
随机推荐
- X86驱动:挂接SSDT内核钩子
SSDT 中文名称为系统服务描述符表,该表的作用是将Ring3应用层与Ring0内核层,两者的API函数连接起来,起到承上启下的作用,SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用 ...
- DVWA漏洞演练平台 - SQL注入
SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,具体来说,它是利用现有应用程序将(恶意的)SQL命令注入到后台数据库引擎执 ...
- hdu 6140 思维
题解:这道题中的数能组成的数构成了一个连续区间. 一开始只有 a1 的时候能够构成 [-1, 1][−1,1] 中的所有整数. 如果一堆数能够构成 [-a, b][−a,b] 中的所有整数, 这时 ...
- hdu 2846 字典树变形
mark: 题目有字串匹配的过程 有两点 1.为了高效的匹配子串 可以把所有的子串都预处理进去 然后字典树计数就放在最后面 2.在同一个母串处理自串的时候 会有重复的时候 比如abab 这里去重用个 ...
- springsecurity学习
首先讲一下,没有用到数据库,然后觉得重要的就是security的配置securityConfig.class,不太会说(好像也不太会用),上图吧,也是学习狂神过来的 项目结构 大致效果 pom.xml ...
- extension(类扩展)和 category(类别)
extension(类扩展) 简单来说,extension在.m文件中添加,所以其权限为private,所以只能拿到源码的类添加extension.另外extension是编译时决议,和interfa ...
- 解决织梦5.7添加新变量出现:Request var not allow!的办法
找到:根目录->include->common.inc.phpif( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_ ...
- 原生js中如果有多个onload事件解决方案
在一个页面中有两个JavaScript 分别都用到了window.onload 一个是:window.onload=func1,另一个是:window.onload=func2 这样就造成了一个Jav ...
- YOLO---Darknet下使用YOLO的常用命令
Darknet下使用YOLO的常用命令 整理了一下,随手记一下. 在终端里,直接运行时Yolo的Darknet的各项命令,/home/wp/darknet/cfg/coco.data文件,使用原件:= ...
- shell脚本基础编写
shell脚本的格式 名称:Shell 脚本文件的名称可以任意,但为了避免被误以为是普通文件,建议将 .sh 后缀加上,以表示是一个脚本文件. shell 脚本中一般会出现三种不同的元素: 第一行的脚 ...