本文共 5004 字,大约阅读时间需要 16 分钟。
Django 项目里多个app目录共用一个 urls 容易造成混淆,后期维护也不方便
from django.urls import path, include''' app urls,由项目urls转发而来'''urlpatterns = [ #路由转发 在app下新建urls,在项目urls下进行路由转发,include中写AppName.urls path('zhylbwg/',include("zhylbwg.urls")),]
from django.urls import path, include# 导入视图至app urls中from zhylbwg.views import login''' app urls,由项目urls转发而来'''urlpatterns = [ path("zhylbwg/login/", login.login),]
反向解析一般用在模板中的超链接及视图中的重定向
目录结构:
from django.urls import path, includefrom zhylbwg.views import loginfrom zhylbwg.views import urlPratice''' app urls,由项目urls转发而来'''urlpatterns = [ path("zhylbwg/login/", login.login), path('zhylbwg/register/', login.register), # 名别路由 path('getRegisterMessage/',urlPratice.reversePractice,name='getRegisterMess')]
from django.shortcuts import render,HttpResponsedef reversePractice(request): return render(request,'master/register.html')
系统注册
目录结构:
from django.urls import path, includefrom zhylbwg.views import loginfrom zhylbwg.views import urlPratice''' app urls,由项目urls转发而来'''urlpatterns = [ path("zhylbwg/login/", login.login), path('zhylbwg/register/', login.register), # 名别路由 path('getRegisterMessage/',urlPratice.reversePractice,name='getRegisterMess'), # 视图重定向 path('viewRedirect/',urlPratice.viewsRedirect)]
# 引入HttpResponseRedirectfrom django.http import HttpResponseRedirectfrom django.shortcuts import render,HttpResponse# 引入reverse反向解析from django.urls import reversedef reversePractice(request): return render(request,'master/register.html')def viewsRedirect(request): # 使用HttpResponseRedirect进行重定向 return HttpResponseRedirect(reverse('getRegisterMess'))
输入地址:
路由别名 name 没有作用域,Django 在反向解析 URL 时,会在项目全局顺序搜索,当查找到第一个路由别名 name 指定 URL 时,立即返回。当在不同的 app 目录下的urls 中定义相同的路由别名 name 时,可能会导致 URL 反向解析错误
# 命名空间格式include(("appName:urls","命名空间名称"))
urlpatterns = [ # 路由转发 在app下新建urls,在项目urls下进行路由转发并给定命名空间 path(r'zhylbwg/',include(("zhylbwg.urls","zhylbwg"))),]
from django.http import HttpResponseRedirectfrom django.shortcuts import render,HttpResponsefrom django.urls import reversedef viewsRedirect(request): return HttpResponseRedirect(reverse('zhylbwg:getRegisterMess'))
系统注册
输入地址:
from django.urls import path, re_pathfrom zhylbwg.views import loginurlpatterns = [ # 正则匹配路径 re_path(r"^login/id=?[0-6]{4}/$",login.login)]
import jsonfrom zhylbwg.models import loginModelsfrom zhylbwg.views import md5 # 导入自定义md5加密函数from zhylbwg.views import requestResult # 导入自定义的统一返回函数from django.shortcuts import render, HttpResponsedef login(request): if request.method == 'POST': # 获取请求头数据,请求以json的格式传输 loginInfor = request.body loginInformation = json.loads(loginInfor) # 获取用户名 userName = loginInformation.get('userName') # 判断该用户名是否存在 userNameDB = loginModels.Userinfo.objects.filter(userName=userName) print(userNameDB.values_list('userName')[0]) if len(userNameDB) == 0: return HttpResponse(json.dumps(requestResult.result_json('202', '该用户名不存在,请注册', '')), content_type="application/json,charset=utf-8") else: ''' 判断密码是否正确 ''' # 得到前端传过来的密码 userPwd = loginInformation.get('userPwd') # 使用mdb进行加密 userPwdMd5 = md5.Md5(userPwd) # 根据同用户名从数据库中获取密码 checkLogin = loginModels.Userinfo.objects.get(userName=userName) # 比较2个密码是否一致 if userPwdMd5 == checkLogin.userPwd: # 若一致,则登录成功 return HttpResponse(json.dumps(requestResult.result_json('203', '登录成功', '')), content_type="application/json,charset=utf-8") else: return HttpResponse(json.dumps(requestResult.result_json('504', '密码错误', '')), content_type="application/json,charset=utf-8")
注意:基于正则的url反向解析及命名空间同样使用
转载地址:http://eaqms.baihongyu.com/