Django之路由
1.获取url中传递的值,通过反射到相应的表中执行增删改查。
urlpatterns = [ url(r'^admin/', admin.site.urls), # url(r'^delete/表名/id值/') # 在url中加入分组,就可以把url中的值传递到view中 url(r'^delete/([a-zA-Z]+)/(\d+)/$',views.delete), # 什么都匹配不上,默认转到此页面 url(r'^$',views.home), ]
from django.shortcuts import render,HttpResponse from app01 import models # Create your views here. def delete(request,table_name,delete_id): print(table_name,delete_id) # 需要判断一下,表名和id值是否都是正经的数据 # 从另一个文件 根据字符串 反射具体的变量 table_name = table_name.capitalize() if hasattr(models,table_name): # 如果能找到 table_class = getattr(models,table_name) try: table_class.objects.get(id=delete_id).delete() except Exception as e: print(str(e)) print("id值不存在!") return HttpResponse("表名:{}\nid:{}".format(table_name,delete_id)) else: return HttpResponse('表不存在!')
2.url中的弱匹配:
防止以后频繁更改url时,相关的代码都要更改的情况。
# 下面两种情况,
# 第一种情况,url改动之后,相应的a标签也要改动,变一次改一次 # 第二种情况,url改动之后,只要name='home'不改变,a标签就不需要改动。 url(r'^home/$',views.home), url(r'^home666/$',views.home,name="home"),
# 这是在HTML页面中把url写死的结局:page not found
<a href="home">首页</a>
<a href="{% url 'home' %}">首页</a>
即使再变成url(r'^home45613249841/$',views.home,name="home"),第二个a标签还是可以找到。
在html中反向解析:

在views中反向解析:
# 在视图中的反射,reversed from django.urls import reverse def test(request): print("首页的url是:",reverse("home",args=("house",))) return render(request,"test.html")
![]()

浙公网安备 33010602011771号