【问题标题】:NameError: Name view_post is not defined [duplicate]NameError:名称view_post未定义[重复]
【发布时间】:2018-08-01 01:30:17
【问题描述】:

更新

我为另一个简单的 Django 问题道歉,但我找不到我想要的。

项目:博客 我正在尝试使用 Django 2.0 对应用程序进行 URL 设计

mysite/url.py

Error after run

server error

【问题讨论】:

  • 你还没有在urls.py中导入view_post
  • 如何在 urls.py 中导入?
  • 看我有帖子作为答案
  • 请不要链接到屏幕截图。复制并粘贴答案中的代码和回溯。

标签: django django-views


【解决方案1】:

Django 2.0 为 url 添加了新的 path 函数:https://docs.djangoproject.com/fr/2.0/ref/urls/#path

path 不再使用正则表达式。

你有两个解决方案

1) 使用 path 并将 url 模式更改为新的 django 格式

from django.urls import path 
urlpatterns = [
    url('/post/<int:pk>/', ...)
]

2) 保留正则表达式并使用re_path

from django.urls import re_path
urlpatterns = [
    re_path('^/post/(?<pk>[0-9]+)/$', ...)
]

请注意,仍然可以使用url 函数,但可能会在下一个版本中被弃用。在 Django 2.0 中已将其重命名为 re_path

【讨论】:

    【解决方案2】:

    更新你的 urls.py 文件。

    你需要在 urls.py 文件中导入view_post

    from blog.views import view_post
    #from appname.file.py import (class/func)name
    

    由于您在 urls.py 中使用 view_post,因此您还需要将其导入该文件中。

    【讨论】:

    • 找不到页面 (404) 请求方法:GET 请求 URL:127.0.0.1:8000/post/1 使用 mysitee.urls 中定义的 URLconf,Django 尝试了这些 URL 模式,顺序为:admin/ blog/ ^post/ (?P[0-9]+)/$ [name='view_post'] 当前路径 post/1 与其中任何一个都不匹配。您看到此错误是因为您的 Django 设置文件中有 DEBUG = True 。将其更改为 False,Django 将显示标准 404 页面。
    • 用代码而不是图片更新您的问题,并将您的错误发布为文本代码。
    • post/(?P&lt;pk&gt;\d+)/$更新你的网址post/(?P&lt;pk&gt;[0-9]+)/$
    • 我想要127.0.0.1:8000/post/1 第一篇博文
    • post/(?P&lt;pk&gt;\d+)/$ 更新您的url.py post/(?P&lt;pk&gt;[0-9]+)/$,当您点击127.0.0.1:8000/post/1 时,它将返回您想要的结果。
    猜你喜欢
    • 2020-06-17
    • 2016-07-06
    • 2015-10-22
    • 2016-05-12
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    相关资源
    最近更新 更多