django学习之三django URL name 详解

django学习之三django URL name 详解

 

1.说明:当项目需要更换url地址时,往往会因为某些功能在模板文件中写死了url路径,导致更换url地址后找不到对应的资源,因此使用URL name 方法,修改url时必须保持URL name不变,这样增强了代目的可移植性。

2.项目要求:

①当需要修改url时,只需要修改urls.py文件就行了,不需要修改其他代码

②当修改url后,用户浏览器原有的书签还是以前的url地址,需要点击访问旧的地址自动跳转到新的url地址,使用户访问正常

3.项目结构

 

4.编辑代码templates/home.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>陈建文的学堂</title>
</head>
<body>
{% url 'jisuan' %}     ##引用URL name
<a href="{% url 'add2' 4 5 %}">计算 4+5</a>  ##定义链接内容
</body>
</html>

5.编辑代码learn/views.py

# -*- coding: utf-8 -*-
from django.http import HttpResponse
from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse

#打印信息
def index(request):
    return HttpResponse(u'<h3>欢迎来到陈建文的学习基地!')

#计算方法1
def add1(request):
    a = request.GET['a']
    b = request.GET['b']
    c = int(a)+int(b)
    return HttpResponse(str(c))

#计算方法2
def add2(request,a,b):
    c = int(a)+int(b)
    return HttpResponse(str(c))

#计算方法整合模板
def jisuan(request):
    return render(request,'home.html')

#新旧url地址跳转
def old_add2_redirect(request,a,b):
    return HttpResponseRedirect(reverse('add2',args=(a,b)))

6.编辑代码/urls.py

from django.conf.urls import url
from django.contrib import admin
from learn import views as learn_views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$',learn_views.index),
    url(r'^add1/$',learn_views.add1,name='add1'),
    url(r'^add2/(\d+)/(\d+)/$',learn_views.add2,name='add2'),
    url(r'^jisuan/',learn_views.jisuan,name='jisuan'),
    url(r'^old_add/(\d+)/(\d+)/$',learn_views.old_add2_redirect),
    url(r'^new_add/(\d+)/(\d+)/$',learn_views.add2,name='add2')
]

7.运行程序:python manage.py runserver 0.0.0.0:8000

8.检验结果

URL地址:

 项目要求①,url ‘jisuan’ 可以随意更改

项目要求②,实现新旧地址跳转

 

===================大功告成===================

===================QQ1071179133===================

 

posted @ 2017-07-24 10:07  chenjianwen  阅读(319)  评论(0编辑  收藏  举报