简单地在我的项目中的任何地方提到reverse()
都失败了,所以{%url%}也是如此。
如果滚动到底部,我已经取得了一些进展!
相关文件
根/ urls.py
from django.conf.urls.defaults import patterns, include, url
from django.contrib.staticfiles.views import serve as serveStatic
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^admin/', include(admin.site.urls)),
(r'^dbrowse/', include('dbrowse.urls')),
(r'^static/', serveStatic),
url(r'^$', 'core.views.viewHallo',name='home'),
)
根/型芯/ views.py
from django.shortcuts import render_to_response
from django.template.context import RequestContext
from site import site_store
def viewHallo (request):
pass
return render_to_response ('core.html',
{'site':site_store,
'title':'i am the hallo view',
'content':'Hallo World!',},
context_instance=RequestContext(request))
备注
我第一次注意到reverse()
在我的项目中有一个名为site.py
的文件试图调用reverse()
时失败了。我用它来存储网站设置。我正在使用该文件,因为
此后我发现了一种使用模型来实现这两个目标的方法。
但所有这些只是额外的背景信息,以防你在这里有人评论site.py
。
更新25/02/11
这里好了!
首先注意urls.py
有(r'^dbrowse/', include('dbrowse.urls'))
。导致reverse()
失败的原因。我稍后会解释......
对于模板标签,我发现{% url %}
没有变量。我完全认为这是理所当然的。事实上当我测试模板标签时,我只是进入并硬编码{% url 'home' %}
之类的东西,这些东西可以工作,有时候我会用{{% url home %}
来测试home
{1}}是一个变量。我甚至不认为这是完全不同的测试用例。
但我现在知道{% load url from future %}
允许您将变量用作{% url %}
无论如何,现在回到(r'^dbrowse/', include('dbrowse.urls'))
urls.py
我有一个像这样的文件夹
project\
--dbrowse\
__init__.py
urls.py
现在这是 dbrowse / urls.py
from django.conf.urls.defaults import patterns, url
#databrowse
from django.contrib import databrowse
databrowse.site.register(MyModel)
urlpatterns = patterns('',
url(r'(.*)',databrowse.site.root, name='dbrowse'),)
这是我试图避免将databrowse.site.register(MyModel)
放在项目的根目录urls.py
中,就像文档建议的那样。我不喜欢用urls.py
databrowse.site.register(MyModel)
的想法
然而,我仍然不明白为什么这导致reverse()
打破。但我怀疑它与(.*)
处于模式中有关。