【问题标题】:what's wrong with my urls.py in this example?在这个例子中我的 urls.py 有什么问题?
【发布时间】:2014-09-20 02:30:37
【问题描述】:

我刚刚安装了 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')

【问题讨论】:

    标签: django django-urls django-userena


    【解决方案1】:

    您需要删除 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')),
    )
    

    【讨论】:

    • 现在我得到attributeError at / str object has no attribute META
    • 那是另一个问题,请将回溯粘贴到您的问题中。
    • 不,使用带点的名称仍然有效。它在 1.8 中已弃用,但仍可以使用此表单。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      # views.py
      from django.shortcuts import render
      
      def home(request):
          return render(request, 'homepage.html')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-23
        • 1970-01-01
        • 2018-09-05
        • 1970-01-01
        • 2021-07-25
        • 1970-01-01
        相关资源
        最近更新 更多