Django学习笔记:url反向解析(别名用法)

本文介绍了Django中使用url别名进行反向解析的方法,避免了大量URL修改时的繁琐工作。在Django 1.8.2和Python 3.7环境下,通过设置urls.py中的'name'参数与html模板中的'{% url 'xxx' %}'匹配,实现后台路径变化但前端访问路径不变的效果。通过views.py调用相应函数,返回渲染后的"login.html"给浏览器,确保页面正常显示。作为一个Python初学者的学习笔记,作者期待与读者交流学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习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。
在浏览器中测试正常,这里用的是login替换原始的urls
PS:本人纯属刚刚学习Python的小白,此文只是在学习中遇到了问题,特地把笔记分享出来,欢迎各位老师大神指正,共同学习,非常感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值