我正试图搞清楚Django URL名称空间.但我找不到任何示例或文档.
这是我尝试过的.
urls.py:
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^foo/', include('sub_urls', namespace='foo', app_name='foo')),
(r'^bar/', include('sub_urls', namespace='bar', app_name='bar')),
)
Run Code Online (Sandbox Code Playgroud)
sub_urls.py:
from django.conf.urls.defaults import patterns, url
from views import view1
urlpatterns = patterns('views',
url(r'^(?P<view_id>\d+)/$', view1, name='view1')
)
Run Code Online (Sandbox Code Playgroud)
views.py:
from django.shortcuts import render_to_response
def view1(request, view_id):
return render_to_response('view1.html', locals())
Run Code Online (Sandbox Code Playgroud)
在view1.html中,{%url foo:view1 3%}输出/ foo/3,{%url bar:view1 3%}输出/ bar/3.无论我浏览到/ foo/X还是/ bar/X,都是如此.
我想要的是能够浏览到/ foo/X或/ bar/X,并且{%url view1 3%}分别输出/ foo/3或/ bar/3.
在Django的模板语言中,您可以使用{% url [viewname] [args] %}生成带有参数的特定视图的URL.你怎么能以编程方式在Python代码中做同样的事情?
我需要的是创建一个菜单项列表,其中每个项目都有名称,URL和活动标志(无论它是否是当前页面).这是因为在Python中执行此操作比使用模板语言要清晰得多.
我正在尝试为列出django_tables对象创建一个通用表.我已经完成了所有工作,除了get_absolute_urls()我的User对象返回:
/users/<username>/
Run Code Online (Sandbox Code Playgroud)
虽然我可以创建此URL,但它与网站布局的其余部分不匹配,所以我正在寻找另一种方法来执行此操作.有没有办法在不破坏内置身份验证和其他功能的情况下覆盖此值?
我正在尝试使用Django,并弄清楚如何设置urls.py,以及url如何工作.我已经在项目的根目录中配置了urls.py,以指向我的博客和管理员.但现在我想在我的家中添加一个页面,所以在localhost:8000.
所以我已经将以下代码添加到项目根目录中的urls.py:
from django.views.generic.simple import direct_to_template
urlpatterns = patterns('',
(r"^$", direct_to_template, {"template": "base.html"}),
)
Run Code Online (Sandbox Code Playgroud)
问题是它在blog/templates /中搜索模板而不是我的根目录中的模板文件夹.其中包含base.html
完整的urls.py:
from django.conf.urls import patterns, include, url
from django.views.generic.simple import direct_to_template
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r"^$", direct_to_template, {"template": "base.html"}),
url(r'^blog/', include('hellodjango.blog.urls')),
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
(r'^tinymce/', include('tinymce.urls')),
)
Run Code Online (Sandbox Code Playgroud)
编辑:添加完整的urls.py :)
我忽略了什么吗?
我正在编写一个基于成员的Web应用程序,我需要能够在登录后重定向页面.我想在我的views.py文件中使用我的urls.py脚本中的命名url作为登录应用程序,但我不能为我的生活找出该怎么做.我有的是这个:
def login(request):
if request.session.has_key('user'):
if request.session['user'] is not None:
return HttpResponseRedirect('/path/to/page.html')
Run Code Online (Sandbox Code Playgroud)
我想要完成的是:
def login(request):
if request.session.has_key('user'):
if request.session['user'] is not None:
return HttpResponseRedirect url pageName
Run Code Online (Sandbox Code Playgroud)
我执行此操作时出现语法错误,有什么想法吗?
我正在开发一个django应用程序,随着时间的推移,URL已经增长.我现在和他有很多关系,由于我做了一些改变,一个视图开始出现故障.当我尝试获取http://example.com/foo/edit_profile时,它应该执行视图某些视图功能,X但它正在执行Y.在某个地方,网址路由混乱,我无法弄清楚.我使用该django.core.urlresolvers.resolve方法从shell中尝试它,我可以确认URL被错误地解决了.但是,我不知道如何调试它并查明问题.
理想情况下,我希望看到类似"测试此模式","测试此模式"等等,直到最终找到正确的模式,然后我可以环顾四周解决的问题.我找不到这样的东西.
这不是大型项目的常见问题吗?人们做什么?
更新
我知道系统如何工作以及如何逐个浏览URL.这就是我想要做的.这个问题基本上是要求捷径.
尽管我喜欢django文档,但管理员中关于bookmarklet的部分却很奇怪.
我的问题是这样的:如果我在视图中并且我有一个django模型(或者,在某些情况下,是一个实际的对象),我怎样才能到达该模型(或对象)的相关管理页面?如果我有对象coconut_transportation.swallow.objects.all()[34],我怎么能直接跳到管理页面来编辑那个特定的燕子?
同样,如何获取管理页面的URL以添加另一个吞咽?
如标题所示:如何#从Django视图访问url hash/fragment(破折号后面的部分),因此,我想,来自Django Request对象?
我没有找到有关此处可用文档的足够信息:http://docs.djangoproject.com/en/dev/ref/request-response/
PS假设片段部分被发送到服务器(在我的特定情况下是这样,因为它不是发送请求的浏览器).
考虑我包含命名空间可重用的应用程序:
urlpatterns = patterns('',
# ella urls
url('^ella/', include('ella.core.urls', namespace="ella")),
)
Run Code Online (Sandbox Code Playgroud)
现在,Ella应用程序的网址是这样的:
urlpatterns = patterns( '',
url( r'^(?P<category>[a-z0-9-/]+)/$', category_detail, name="category_detail" ),
# object detail
url( r'^(?P<category>[a-z0-9-/]+)/(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/(?P<content_type>[a-z0-9-]+)/(?P<slug>[a-z0-9-]+)/$',
object_detail, name="object_detail" )
)
Run Code Online (Sandbox Code Playgroud)
现在,通话{% url ella:category_detail category="cat" %}工作正常.但是,当对象尝试生成指向其详细信息的链接时,它会调用
from django.core.urlresolvers import reverse
url = reverse('object_detail', kwargs={'required' : 'params'})
Run Code Online (Sandbox Code Playgroud)
这不起作用,除非重写为
from django.core.urlresolvers import reverse
url = reverse('ella:object_detail', kwargs={'required' : 'params'})
Run Code Online (Sandbox Code Playgroud)
因此,如果我理解正确,包括可重用的应用程序进入命名空间会破坏给定应用程序内的所有内部reverse().
这是真的吗?我错过了什么?有什么办法吗?
我正在开发一个包含多个应用程序的django项目.每个应用程序都有自己的一组模型和视图.
每个应用程序是否也应该使用urls.py或函数来定义自己的url.在django项目中定义应用程序URL的最佳实践是什么,并将这些URL与主urls.py(root url conf)集成?