创建应用
项目和应用的区别
简单的理解,项目可以理解为一个网站,应用是网站上的一个模块,比如阅读模块,电影模块,美食模块等
创建应用
1、在项目根目录运行
python manage.py startapp crm
创建视图函数
1、找到创建的应用crm–>views.py
from django.http.response import HttpResponse
def index(request):
return HttpResponse("这是首页面")
2、创建子路由
在创建的crm应用中创建一个urls.py文件,与views.py文件同级
from django.urls import path
from . import views
# urlpatterns 该变量名约定俗称,不能更改
urlpatterns = [
path('index/', views.index)
]
path()函数
path(route,view,kwargs=None,name=None)
path: 函数返回一个对象,表示一个路由规则
route: 一个字符串,表示url规则
view: 一个视图
kwargs: 一个字典,需要传入额外的参数
name: url的命名
一般使用route,view和name,kwargs用很少
3、创建跟路由
在项目根目录找到urls.py文件中添加
path(‘crm/’, include(‘crm.urls’))
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('crm/', include('crm.urls'))
]
include()
include(module,namespace=None)
一般namespace不使用
4、访问创建的视图函数
http://127.0.0.1:8000/crm/index/
5、url路径参数
想要将url地址中的参数传递给视图函数,如希望将地址http://127.0.0.1:8000/crm/students/2022/1/中的/2022/1/传递给students视图函数
方法:在子路由配置中添加一个参数,且与视图 函数中的参数一致
子路由配置
urlpatterns = [
path('students/<year>/<month>/', views.students)
]
视图函数配置
from django.http.response import HttpResponse
def students(request,year,month):
return HttpResponse(f"{year}年{month}月学生信息")
6、路径转换器
使用方式:“<转换器:参数名>”
urlpatterns = [
path('students/<int:year>/<int:month>/', views.students)
]
转换器在默认情况下是可用的:
str: 匹配除了路径分隔符/之外的任何非空字符串。如果表达式中表达式不包含转换器,默认为字符串转换器。
int: 匹配0或任何整数。返回一个整数类型
slug:匹配任何由ASCII字符或数字组成的slug字符串,加上连字符和下划线。
uuid: 匹配格式化的UUID。为了防止多个url映射到同一个页面,必须包含破折号并且必须是小写字母。
path: 匹配任何非空字符串,包括路径分隔符/。这允许匹配完整的URL路径,而不是像str那样仅匹配url路径部分
7、re_path()
re_path(route,view,kwargs=None,name=None)
route: 一个字符串,表示一个url规则
view: 一个视图
kwargs: 一个字典,需要传入的额外参数
name: url命名
与path()不同的是,route部分包含正则表达式。
正则表达式分为命名的和匿名的
匿名表达式
urlpatterns = [
re_path('students/(\d{4})/(0[1-9]|[1-9]|1[0-2])/', views.students)
]
命名表达式
urlpatterns = [
re_path('students/(?P<year>\d{4})/(?P<month>0[1-9]|[1-9]|1[0-2])/', views.students)
]
注:re_path不会做类型转换