在这个例子中我的urls.py有什么问题?

时间:2014-09-20 02:30:38

标签: django django-urls django-userena

我刚刚安装了userena,并在示例中使用了该示例,但是当我在URLS.py中添加一行时,我收到了一个错误。在下面的示例中,我添加了映射来自views.py

的home函数的行

现在我遇到的问题是,当我转到127.0.0.1/8000时,我得到TypeError:字符串不可调用,但奇怪的是,如果我去帐户/注册或帐户/登录,我会得到如果我转到127.0.0.1/8000,应该出现的模板。

from django.conf import settings
from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
from django.views.generic import TemplateView
from accounts import views
from django.contrib import admin
admin.autodiscover()


urlpatterns = patterns('',
    url(r"^$", 'home'),

    url(r'^admin/', include(admin.site.urls)),
    (r'^accounts/', include('userena.urls')),
)

这是我的帐户/ views.py

from django.shortcuts import render
from django.http import HttpResponseRedirect

def home(request):

return render('homepage.html')

3 个答案:

答案 0 :(得分:0)

您需要删除网址中的引号并导入该视图

from accounts.views import home

urlpatterns = patterns('',
    url(r"^$", home),

    url(r'^admin/', include(admin.site.urls)),
    (r'^accounts/', include('userena.urls')),
)

你可以钢铁使用url()中的字符串,但你必须使用'app.views.viewname'

格式
urlpatterns = patterns('',
    url(r"^$", 'accounts.views.home'),

    url(r'^admin/', include(admin.site.urls)),
    (r'^accounts/', include('userena.urls')),
)

或者将第一个参数中的模块命名为patterns()

的字符串
urlpatterns = patterns('accounts.views',
    url(r"^$", 'home'),

    url(r'^admin/', include(admin.site.urls)),
    (r'^accounts/', include('userena.urls')),
)

答案 1 :(得分:0)

问题是我忘了在回复渲染中包含请求。

答案 2 :(得分:0)

正确答案是render被错误地调用。实际上,views.py文件会引发一个SyntaxError,但是我们会让它滑动:)

# views.py
from django.shortcuts import render

def home(request):
    return render(request, 'homepage.html')