最近在学习Django,练习登录页面,当遇到要修改某一单个页面地址时,在后台修改很容易。但是遇到要修改大量urls时,也就是在遇到要修改大量的视图函数时,修改起来就非常麻烦。也就是希望不要硬编码这些URL,因为它费力、不可扩展且容易产生错误。
以下是示例:一个简单的登录页面(Django 版本1.8.2,Python 版本3.7)
1、基本语法:
urls.py
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^login/', views.login, name="xxx"),
# 给url起别名,"xxx"对应的路径就是:login.html"中的{% url'xxx'%}"
# <form action="{% url'xxx'%}" method="post">
]
views.py
from django.shortcuts import render, HttpResponse
def login(request):
return render(request, "login.html")
login.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Mysite</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/static/commons.css" />
</head>
<body>
==<!--<form action="/login.html/" method="post"> # 注释:这是原始路径-->==
<form action="{% url 'xxx' %}" method="post"> <!--# django别名基本语法-->
用户名 <input type="text" name="user">
密码 <input type="password" name="pwd">
<input type="submit">
</form>
</body>
</html>
注意:
1、在html文件中,"{% url ‘xxx’ %}" 这是django别名的特殊语法。
2、在urls.py中的:name=“xxx” 要与login.html文件中的 "{% url ‘xxx’ %}"必须一致,否则会报错。
2、基本流程:
1 后台路径,也就是在urls.py中,url(r’^login/’, views.login, name=“xxx”),不论此处url路径如何进行修改,前台访问的路径不变,始终是"login.html"。
2 前台再去views.py中调取函数方法:return render(request, “login.html”)对应的的url参数,也就是"login.html",解析后再返回给浏览器,最终呈现想要的页面。
结果:在浏览器中测试正常,这里用的是login替换了原始的urls。
PS:本人纯属刚刚学习Python的小白,此文只是在学习中遇到了问题,特地把笔记分享出来,欢迎各位老师大神指正,共同学习,非常感谢!