导读:今天首席CTO笔记来给各位分享关于django的urls文件怎么导入的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
请教各位高手Django的url配置问题
流线型化(streamlinling)函数导入
1:直接导入视图函数
from django.conf.urls.defaults import *
from mysite.views import hello
urlpatterns = patterns('',
(r'^hello/$', hello),
(r'^time/$', time),
)
2:导入包函模块名和函数的客串,而不是函数本身
from django.conf.urls.defaults import *
from mysite import views
urlpatterns = patterns('',
(r'^hello/$', 'views.hello'),
(r'^time/$', 'views.time'),
)
3:不用导入任何视图内容,写清楚字符串描述
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^hello/$', 'mysite.views.hello'),
(r'^time/$', 'mysite.views.time'),
)
4:提取一个公共视图前缀
from django.conf.urls.defaults import *
urlpatterns = patterns('mysite.views',
(r'^hello/$', 'hello'),
(r'^time/$', 'time'),
)
5:partterns()返回对对象的相加
旧:
from django.conf.urls.defaults import *
urlpatterns = patterns('mysite.view',
(r'^hello/$', 'hello'),
(r'^time/$', 'time'),
(r'^other/$', 'mysite.others.other'),
)
新:
from django.conf.urls.defaults import *
urlpatterns = patterns('mysite.view',
(r'^hello/$', 'hello'),
(r'^time/$', 'time'),
)
urlpatterns += patterns('mysite.others',
(r'^other/$', 'other'),
)
6:到目前为止,在所有URLconf例子中,我们使用的很简单,即“无命名”正则表达式组,在我们
想要捕获的URL部分加上小括号,django会将捕获的文本作为位置参数传递给视图函数。在更
高级的用法中,还可以使用“命名”正则表达式组来捕获URL,并且将其作为“关键字”参数 传给视图。
在python正则表达式中,命名的正则表达式组的语法是(?pnamepattern),这里name是组的名字,而pattern是匹配的某个模式。
下面是一个使用无名组的URLconf的例子:
from django.conf.urls.defaults import *
from mysite import views
urlpatterns = patterns('',
(r'^arcticles/(\d{4})/$',views.year_archive),
(r'^arcticles/(\d{4})/(\d{2})/$', view.moth_archive),
)
下面是相同的URLconf,使用命名组进行了重写:
from django.conf.urls.defaults import *
from mysite import views
urlpatterns = patterns('',
(r'^arcticles/(?Pyear\d{4})/$', veiws.year_archive),
(r'^arcticles/(?Pyear\d{4})/(?Pmonth\d{2})/$', veiws.month_archive),
)
如果不带命名组,请求/arcticle/2006/03/将会等于这样的函数调用:
month_archive(request, '2006', '03')
而带命名组,同样的请求就是这样的函数调用:
month_archive(request, year='2006', month='03')
从中可以看出,使用命名组可以让你的URLconf更加清晰,减少参数次序可能搞混潜在的Bug,
还可以让你的定义中对参数重新排序。
7:视图冗余:
# urls.py
from django.conf.urls.defaults import *
from mysite import views
urlpatterns = patterns('',
(r'^(foo)/$', views.foobar_view),
(r'^(bar)/$', views.foobar_view),
)
# views.py
from django.shortcuts import render_to_response
from mysite.models import MyModel
def foobar_view(request, url):
m_list = MyModel.objects.filter(is_new=True)
if url == 'foo':
template_name = 'template1.html'
elif url == 'bar':
template_name = 'template2.html'
return render_to_response(template_name, {'m_list': m_list})
利用上面的方法可以减少视图冗余
8:为url里传入固定的参数:
# urls.py
from django.conf.urls.defaults import *
from mysite import views
urlpatterns = patterns('',
(r'^foo/$', views.foobar_view, {'template_name': 'template1.html'}),
(r'^bar/$', views.foobar_view, {'template_name': 'template2.html'}),
)
# views.py
from django.shortcuts import render_to_response
from mysite.models import MyModel
def foobar_view(request, template_name):
m_list = MyModel.objects.filter(is_new=True)
return render_to_response(template_name, {'m_list': m_list})
一些URL参数详解:
/mydata/jan/01/
/mydata/jan/02/
/mydata/jan/03/
以上为三个url我们可以用不同的方式实现
1: (r'^mydata/(/w{3})/(/d/d)', views.mydata) mydata(request, 'jan', '01')
2: (r'^mydata/(?Pmonth/w{3})/(?Pday/d/d)', view.mydata) mydata(request, month='jan', day='01')
3: (r'^mydata/birthday/$', views.mydata, {month:'jan', day:'01'}) mydata(request, month='jan', day='01')
9:include导入:
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^weblog/', include('mysite.blog.urls')),
(r'^photos/', include('mysite.photos.urls')),
(r'^about/$', 'mysite.views.about'),
)
10:实例:
验证用户是否登录:
以下是三个视图
def my_view1(request):
if not request.user.is_authenticated():
return HttpResponseRedirect('/accounts/login/')
# ...
return render_to_response('template1.html')
def my_view2(request):
if not request.user.is_authenticated():
return HttpResponseRedirect('/accounts/login/')
# ...
return render_to_response('template2.html')
def my_view3(request):
if not request.user.is_authenticated():
return HttpResponseRedirect('/accounts/login/')
# ...
return render_to_response('template3.html')
以下是对视图进行包装:
def requires_login(view):
def new_view(request, *args, **kwargs):
if not request.user.is_authenticated(): #如果用户没有登录,跳转到登录界面
return HttpResponseRedirect('/accounts/login/')
return view(request, *args, **kwargs) #否则返回传进来的方法
return new_view #返回new_view值:登录视图或者是传进来的视图
以下为URL配置:
from django.conf.urls.defaults import *
from mysite.views import requires_login, my_view1, my_view2, my_view3
urlpatterns = patterns('',
(r'^view1/$', requires_login(my_view1)),
(r'^view2/$', requires_login(my_view2)),
(r'^view3/$', requires_login(my_view3)),
)
django views和url
提示你在urls.py里面 import views出错
可以看一下本目录有没有__init__.py文件,有的话,换个导入方式,比如import views
其实使用django-admin createapp appname时,自动创建的文件目录中,已经写好了
django中怎么载入css等静态文件
Django版本1.10
网站通常需要js,css,图片等文件,在Django中,我们把这些文件称为“静态文件”(static files)。Django提供django.contrib.staticfiles来管理他们。 使用方法如下:
1.在settings.py中定义你的STATIC_URL:
STATIC_URL='/static/'1
2.在项目中,static文件的目录如下图所示:
项目名:ProjetTestDjango;APP名:peojetDjango,static 文件夹在APP目录下。
3.在settings.py中添加项目APP:
4.在HTML文件中调用:
{% load static %}link rel="stylesheet" href="{% static 'css/style.css' %}" type="text/css" media="all"12
img class="img" src="{% static 'images/logos/Google_Translate_Icon.png' %}" width="36" height="36"1
django怎么引入js,css文件
参考如下
假如项目的目录tree为:
mysite:
manage.py
mysite:
__init__.py settings.py urls.py wsgi.py
blog(建立的应用程序):
models.py views.py test.py __init__.py templates
开始配置:
1、在外部的mysite目录下(也就是项目的根目录)建立static目录
2、打开settings.py,添加:
import os
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(os.path.dirname(__file__), '../static/').replace('\\','/'),
(
3、打开urls.py,添加(注意:假如在blog应用中新建了一个urls.py文件,那么应该添加到blog目录下的urls.py文件,我曾经在这个坑里纠结了很久):
import settings
urlpatterns = patterns(
url( r'^static/(?Ppath.*)$', 'django.views.static.serve',
{ 'document_root':settings.STATIC_ROOT }),
)
使用:
假设要在模板(存放在templates文件中的)里面导入外部/home/fudaoji/mysite/static/js/jequery.js文件,那么可以直接
script type="text/javascript" src='../../static/js/jquery.js'/javascript
结语:以上就是首席CTO笔记为大家整理的关于django的urls文件怎么导入的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django的urls文件怎么导入的相关内容别忘了在本站进行查找喔。