Django无法找到reverse()URL

时间:2011-11-11 05:00:57

标签: django function login reverse

我有以下URLConf设置:

urlpatterns = patterns('myapp.views',
    url(r'^$', 'index', name="home"),
    url(r'^login$', 'login'),
)

到目前为止,在我看来,我有这个:

def index(request):
    """Displays paginated message views"""
    return HttpResponseRedirect(reverse("myapp.views.login"))

def login(request):
    """Displays login screen"""
    return render_to_response('myapp/login.html', {
            "title": "Login"
    })

当我尝试进入登录页面时出现问题。 Django似乎无法找到我的网址。

转到网址http://localhost:8000/login,我收到以下错误:

  

找不到页面(404)   请求方法:GET请求   网址:http://localhost:8000/login   无法找到“登录”   你看到这个错误,因为你的Django中有DEBUG = True   设置文件。将其更改为False,Django将显示一个   标准404页。

似乎即使我使用反向函数根据我的URLConf找到Django自己推荐的URL,它仍然无法找到自己的URL!

有什么想法吗?

编辑: 我需要澄清一些事情:问题不在于Django无法找出正确的URL,而是一旦加载了该URL,Django就无法找到与之关联的视图。

2 个答案:

答案 0 :(得分:0)

请你把name属性这样放到你的url中 url(r'^ $','index',name =“home”),

然后使用此名称调用reverse

实施例

urlpatterns = patterns('',     url(r'^ archive /(\ d {4})/ $',archive,name =“full-archive”),     url(r'^ archive-summary /(\ d {4})/ $',archive,{'summary':True},“arch-summary”), )

来自django.core.urlresolvers导入反向

def myview(request):     返回HttpResponseRedirect(反向('arch-summary',args = [1945]))

答案 1 :(得分:0)

事实证明,错误是由我更改settings.py文件中的STATIC_URL变量引起的。将其更改回“/ static /”使一切正常。