标签:control 需求 相关 lan char 意义 body ret 数字
除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template
pip3 install
django==1.11.9
创建项目
django-admin startproject mysite ? 创建了一个名为"mysite"的Django 项目
manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库,启动关闭项目与 项目交互 等,不管你将框架分了几个文件,必然有一个启动文件,其实他们本身就是一个文件。
settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
urls.py ----- 负责把URL模式映射到应用程序。
注意事项
这个文件里面放url的路径,和对应的执行函数
from django.conf.urls import url
from django.contrib import admin
from app01 import views ##从app中导入对应的视图函数
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^index/', views.index),
url(r'^books/(\d{4})/$', views.year_books), #多路径的情况,用正则匹配
views.py 写逻辑视图
这里面写url匹配的路径对应的函数关系
from django.shortcuts import render,HttpResponse
# Create your views here.
def index(request):
print(request.method) #'POST' 'GET'
if request.method == 'GET':
return render(request,'login.html') ##返回的是html页面
else:
# print(request.GET)
print(request.POST)
username = request.POST.get('username')
password = request.POST.get('password')
if username == 'dazhuang' and password == '123':
return HttpResponse('登录成功!')
else:
return HttpResponse('登录失败!') ##返回的是字符串
在templates里面创建html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<from act="/index/" method="get">
<input type="text" name="username">
<input type="text" name="password">
<input type="submit" value="提交">
</from>
</body>
</html>
. 表示匹配 除含航服之外的所有字符
[^] 只要不出现在中括号中的内容都可以被匹配
# 有一些有特殊意义的元字符进入字符组中会回复它本来的意义 # . | [ ] ( )
a|b 或 符合a规则的或者符合b规则的都可被匹配 #如果a规则是b规则的一部分,且a规则比b规则要苛刻,就把a规则写在前面
() 分组 表示给几个字符加上量词蕨属的需求的时候,就给这些量词分在一个组
{n} 表示这个量词之前的字符出现n次
{n,} 表示这个量词之前的字符至少出现n次
{n,m} 表示这个凉席之前的字符出现n-m次
? 表示匹配量词之前的字符出现 0 次或者 1次
+ 表示匹配量词之前的字符出现 1 次或者 多次
* 表示匹配量词之前的字符出现 0 次或者 多次
基本格式: urlpatterns = [url(正则表达式,views视图函数,参数,别名)]
url(r'^books/(\d{4})/', views.books)
位置参数
url(r'^books/(\d{4})/', views.year_books), #匹配年份的 ? url(r'^books/(\d{4})/(\d{1,2})/', views.year_month_books), #匹配年份和月份的 # http://127.0.0.1:8000/books/2001/
视图: ?
def year_month_books(request,year,month): #位置参数,第一个参数接收的就是无名分组路径中匹配 到的第一个分组的数据,第二个参数接收的就是无名分组路径中匹配到的第二个分组的数据
print(year,month) ? ? ? ? ?
# return render(request,'books.html') ? ? ? ? ?
形参名称要和url中的分组名对应好,参数位置就没有要求了
? url(r'^books/(?P<year>\d{4})/(?P<month>\d{1,2})/', views.year_month_books), #匹配年份和月 份的 ? ? ?
?
? def year_month_books(request,month,year): #形参名称要和url中的分组名对应好,参数位置就没有要求了 ? ? ?
? print(year,month)?
? ?return HttpResponse(year+month)
默认值,可以减少代码量
# urls.py中
from django.conf.urls import url
from.import views
urlpatterns = [ ?
url(r'^blog/$', views.page), ?
url(r'^blog/page(?P<num>[0-9]+)/$', views.page),
]
# views.py中,可以为num指定默认值
def page(request, num="1"): ?
pass
标签:control 需求 相关 lan char 意义 body ret 数字
原文地址:https://www.cnblogs.com/xiaobai686/p/12000208.html