Django--3--urls.py详解

1.urls.py是url分发器,路由配置文件。在这里面我们会构建起网站的目录,简单来说我们要做的事就是告诉Django,对于某段url该调用哪段代码。

2.在urls.py里我们有多种配置url的方式:

第一种(pattern,过时的方法)

from django.conf.urls import patterns
urlpatterns = patterns('',
    (r'hello/$', v1.hello),
)

第二种(列表,推荐方式)

from django.conf.urls import url
from django.contrib import admin
from hello import views as v1
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^hello/$', v1.hello, name='hello'),
]

让我们来看看url这个函数的各种参数

def url(regex, view, kwargs=None, name=None, prefix=''):
    ......省略......

urlpatterns = [ url ( 正则表达式,view函数,传递给视图的参数, 别名(命名空间),前缀 ) ]  
这里有几个说明:

说明一:这里的view函数我们之前用的是一个对象,但其实也可以用字符串形式去传递

urlpatterns = [
    url(r'^hello/$', 'hello.views.hello', name='hello'),   # 上面的url函数源码中对这种字符串进行了处理
]
说明二:传递的参数可以像下面这样

url(r'^hello/$', v1.hello, {'a': 123}, name='hello'),
一旦我们这样定义之后,由于views.py里面并没有a这个参数,所以会报错,我们需要这样修改:

def hello(request, a):  # 添加这个参数来接受
    print a
    user_list = User.objects.all()
    return render(request, 'table.html', {'user_list': user_list})

3.关于url分解器,include函数

目前我们的url配置都是写在项目的urls.py里面的,这样写本来没有问题,但是当网站功能很多时,我们就会配置很多的url,这时都写在这个urls.py里面就会显得杂乱。所以我们更想就在一个app里面配置这个app的url。

如果要这样做,那么我们首先可以将项目的urls.py复制一份到app里面去。然后在app内进行配置,而在项目的urls.py里我们就需要个url分解器,即include函数去引入你在别的app上写的urls.py

app中urls.py如下:

from django.conf.urls import url
from hello import view  # 从我的app中导入views.py


urlpatterns = [
    url(r'^hello/$', view.hello),
]
项目中的urls.py如下:

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('hello.urls')),   # 这里我们用include函数来引入app中的url
]

4.关于正则表达式

关于正则表达式在另一篇学习爬虫的笔记中有提到,这是个坑,大家且行且注意......

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值