0

我刚刚安装了 userena,并让示例从教程中运行,但是一旦我在 URLS.py 中添加了一行,我就会收到一个错误。在下面的示例中,我添加了从 views.py 映射 home 函数的行

现在我遇到的问题是,当我转到 127.0.0.1/8000 时,我得到 TypeError: string is not callable,但奇怪的是,如果我转到帐户/注册或帐户/登录,我得到的模板是如果我去 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')
4

3 回答 3

0

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

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')),
)
于 2014-09-20T03:05:04.823 回答
0

问题是我忘记在返回渲染中包含请求。

于 2014-09-20T05:10:59.917 回答
0

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

# views.py
from django.shortcuts import render

def home(request):
    return render(request, 'homepage.html')
于 2014-09-20T05:34:34.363 回答