文章目录
基本使用
项目目录及文件说明
manage.py django中的一个命令行工具,管理django项目__init__.py空文件,告诉python这个目录是python包
setting.py 配置文件,包含数据库信息,调试标志,静态文件等
urls.py Django项目的URL声明
wsgi.py 部署服务器用到的
简单测试
-
项目目录下新建views.py
-
from django.http import HttpResponse #响应前端页面对应的模块 #视图函数 def index(request): return HttpResponse('Hello World')
-
urls.py中开启
-
from django.contrib import admin from django.urls import path from . import views#同级目录下导入Views文件作为模块使用 urlpatterns = [ path('admin/', admin.site.urls), path('index/', views.index), ]
urls.py的作用
URL配置(URLconf)就像是Django所支撑网站的目录。它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表。以这样的方式告诉Django,对于那个URL调用那段代码。url的加载就是从配置文件中开始
url传参及参数限定
无参数限定
-
views.py新建函数如下
-
def names(request,name,age): return HttpResponse("名字:{},年龄:{}".format(name,age))
-
urls中:
urlpatterns = [ path('admin/', admin.site.urls), path('inf/<name>/<age>',views.names) ]
转化器-参数限定
默认支持的转换器
str:匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
int:匹配正整数,包含0。
slug:匹配字母、数字以及横杠、下划线组成的字符串。
uuid:匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
path:匹配任何非空字符串,包含了路径分隔符
-
view.py
def names2(request,name,age): return HttpResponse("名字:{},年龄:{}".format(name,age))
-
urls.py
urlpatterns = [ path('admin/', admin.site.urls), path('inf2/<slug:name>/<int:age>',views.names2) ]
re_path正则匹配
-
urls.py中导入模块
-
from django.urls import path,re_path
-
格式
urlpatterns = [ path('admin/', admin.site.urls), re_path('^inf2/(?P<name>[A-z]{4,12})/(?P<age>[0-9][0-9])/$',views.names2) ]
项目与应用app的关系
新建APP
- ubuntu创建:
python manage.py startapp +app名
- 注意(必须cddao到项目目录使用manage.py):
注册APP
主项目的settings.py里注册
include的作用
需要主项目里导入
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls), path('book/',include('book.urls'))
]
APP-views.py
from django.http import HttpResponse #响应前端页面对应的模块
def yq(requests):
return HttpResponse("这是言情小说")
kwargs的作用
主urls.py文件
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘book/’,include(‘book.urls’),{‘switch’:‘true’}),
]
#book-views.py文件
def yq(requests,**kwargs):
return HttpResponse(f"这是言情小说{
kwargs['switch']}")
name的作用
用作重定向
-
book-view.py
from django.shortcuts import render,redirect,reverse#导入重定向需要的两个模块
-
book-urls.py
urlpatterns = [ path('yq/',views.yq), path('yq_new/',views.yq_new,name='yq_new') ]
模板渲染
-
主项目同级目录下新建templates(模板)目录用于存放各中模板
-
主项目-settings.py里导入
-
import os BASE_DIR = Path(__file__).resolve().parent.parent #默认有的获取到总项目目录
-
在此处加入templates路径:
-
加载模块
from django.template.loader import get_template#加载html模板文件的路径
-
views.py下
def yq(requests,**kwargs): reg = get_template('book_yq.html') html = reg.render()#渲染 return HttpResponse(html) #或者直接return render(requests,'book_yq.html')