Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
URL 配置就像 Django 所支撑网站的目录。它的本质是 URL 与要为该 URL 调用的视图函数之间的映射表。意思就是遇到哪个 URL 的时候,要对应执行哪个函数。
from django.conf.urls import url
urlpatterns = [
url(正则表达式,views视图,参数,别名),
url(r'/', views.index, name='index'),
]
1、urlpartterns 中元素按照书写顺序从上往下逐一匹配正则表达式,一旦匹配成功则不再继续,谁在上面,就先匹配,会覆盖下面的。
2、若要从url中捕获一个值【即可以从url中获取参数】,只需要在它周围放置一对尖括号(分组匹配)。
3、不需要添加一个前导的反斜杠,因为每个url都有,例如,应该是^active/而不是^/active/。
4、每个正则表达式前面的 r'' 是可选的但建议加上,以防特殊字符未转义。
Django2.0 版本中的路由系统
from django.urls import path
urlpatterns = [
path('', views.index, name='index'),
path('detail/<news_id>/', views.news_detail, name='detail'), # 新闻资讯的id 方便找资讯
]
① 资讯应用路由
设置 app 命名空间
app_name = 'news'
urlpatterns = [
path('', views.index, name='index'),
path('detail/<news_id>/', views.news_detail, name='detail'), # 新闻的id 方便找新闻
path('search/', views.search, name='search'),
path('list/', views.news_list, name='news_list'),
path('add_comment/', views.add_comment, name='add_comment')
]
② 用户应用路由
app_name = 'auth'
urlpatterns = [
# as_view() 将类转化为 对象函数
path("login/", views.LoginView.as_view(), name='login'),
path("logout/", views.logout_view, name='logout'),
path("register/", views.RegisterView.as_view(), name='register'),
path("img_captcha/", views.img_captcha, name='img_captcha'),
path("auth/", views.Auth.as_view(), name='auth'),
path("upload_token/", views.upload_token, name="upload_token"),
path("token/", views.Token.as_view(), name="token")
]
③ 付费课程应用路由
app_name = 'course'
urlpatterns = [
path('', views.course_index, name='index'),
path('detail/<course_id>/', views.course_detail, name='course_detail'),
path('course_token/', views.course_token, name='course_token'),
path('course_order/', views.course_order, name='course_order'),
path('notify_url/', views.notify_view, name='notify_url'),
path('order_key/', views.order_key, name='order_key'),
]
④ 订单应用路由
app_name = 'payinfo'
urlpatterns = [
path('', views.index, name='index'),
path('payinfo_order/', views.payinfo_order, name='payinfo_order'),
path('order_key/', views.order_key, name='order_key'),
path('notify_view/', views.notify_view, name='notify_view'),
path('download_payinfo/', views.download_payinfo, name='download_payinfo')
]
⑤ 富文本应用路由
app_name = 'ueditor'
urlpatterns = [
# 上传文件/图片
path("upload/", views.UploadView.as_view(), name='upload')
]
if hasattr(settings, "UEDITOR_UPLOAD_PATH"):
urlpatterns += [
path("f/<filename>", views.send_file, name='send_file')
]