PythonWeb开发Django框架学习(七)URL的配置

之前说到了Template的标签和过滤器当然还有其他的,但是作为基础学习,下一步我们将讨论URL的配置和参数的传递,之前所说的url.py的配置方式很简单,就是直接调用APP目录下的views.py引入,但是实际开发中我们肯定是想每一个站点(APP)管理自己的url,那应该怎么配置呢?

一、配置管理站点自己的URL

1.既然需要管理自己的url那就需要在自己的站点(我的:blog)下新建一个urls.py,编辑一下:

from django.conf.urls import url
from blog import views

urlpatterns = [
	url(r'^index/$', views.index ),
]

2.自己的urls.py建立好之后就需要让项目能够感知到,那就需要编辑一下项目路径下的urls.py文件:

from django.conf.urls import url,include
#引入include方法导入站点下的urls.py文件
urlpatterns = [
	url(r'^blog/', include('blog.urls')),
]
3.自己编写方法试验一下吧

二、URL传递参数

有过PHP的ThinkPHP框架学习经验的应该知道URL的模式有好几种,同理在Django中也有几种传值方式,我们先来探究两种吧。

第一种就是普通的GET方式例如:http://127.0.0.1:8000/blog/parameter/?id=123&name=abc   这种方式我们最容易弄懂就是?传值&连结多个值

1.在站点目录下的urls.py文件中进行配置:

from django.conf.urls import url
from blog import views

urlpatterns = [
	url(r'^parameter/$', views.parameter ),
]
2.在views.py文件中编写方法:

def parameter(request):
    now = datetime.datetime.now()  # 获取时间
    id = request.GET.get("id")
    name = request.GET.get("name")
    return render_to_response('parame.html',{"now":now,"id":id,"name":name})
3.在templates文件夹下新建一个parame.html文件并进行编辑:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>传递参数</title>
</head>
<body>
    <li>时间是:{{ now | date:"Y-m-d" }}</li>
    <li>传过来的ID是:{{ id }}</li>
    <li>传过来的Name是:{{ name }}</li>
</body>
</html>
4.试验一下:

第二种方式就是类似于/第一个参数/第二个参数/的方式,例如http://127.0.0.1:8000/blog/bar/9876/zxc34/

1.还是在urls.py中进行配置:

from django.conf.urls import url
from blog import views

urlpatterns = [
	#正则表达式 \d{4} 代表4个数字   \w+ 代表至少一个字母
	url(r'^foo/(\d{4})/(\w+)/$', views.foo ),
]
2.在views.py中编写方法:

def foo(request,p1,p2):
    now = datetime.datetime.now()  # 获取时间
    return render_to_response('parame.html',{"now":now,"id":p1,"name":p2})

3.还是之前的parame.html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>传递参数</title>
</head>
<body>
    <li>时间是:{{ now | date:"Y-m-d" }}</li>
    <li>传过来的ID是:{{ id }}</li>
    <li>传过来的Name是:{{ name }}</li>
</body>
</html>
4.试验一下:




第三种与第二种一样不一样的地方是在配置url时就已经规定好参数的名称,注意规定好之后,在views.py文件中编写的函数的形参久固定啦,不能随意更改

1.配置urls.py文件:

from django.conf.urls import url
from blog import views

urlpatterns = [
	#进一步还可以规定参数的名字
	url(r'^bar/(?P<id>\d{4})/(?P<name>\w+)/$', views.bar ),
]
2.在views.py中编写函数

def bar(request,id,name):
    now = datetime.datetime.now()  # 获取时间
    return render_to_response('parame.html',{"now":now,"id":id,"name":name})

3.还是之前的html测试页面就不再重复了

4.还是实验一下:



OK,本节也就先说到这里吧!!






发布了58 篇原创文章 · 获赞 12 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览