【问题标题】:Django: Wrong URL pattern? View doesnt get called.Django:错误的 URL 模式?视图不会被调用。
【发布时间】:2016-04-11 09:47:10
【问题描述】:

我有一个包含几个应用程序的项目,其中一个叫做博客。我正在尝试为每篇博文呈现一个页面。

models.py(我的项目/博客/模型)

class Blog(models.Model):
    uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    author = models.ForeignKey(User, max_length=40, blank=False)
    title = models.CharField(max_length=40, blank=False)

views.py(我的项目/博客/视图)

def get_blog(request, blog_id):
    print "THIS STRING IS A TEST"
    blogpost = Blog.objects.get(pk=blog_id)
    context = {'blogpost': blogpost}
    return render(request, 'blog_page.html', context)

urls.py(我的项目/网址)

urlpatterns = [
    url(r'^$', 'app_1.views.home', name='home'),    
    url(r'^blog/(?P<blog_id>\d+)/$','blog.views.get_blog'),

]

我的一篇博文具有以下 uuid:98bfad8b-c44c-41d0-98d0-158379c3e362
然而,当我访问“example.com/BLOG/98bfad8b-c44c-41d0-98d0-158379c3e362”时,什么也没有发生。
它也没有打印出“这个字符串是一个测试”,这告诉我视图甚至没有被调用。
这是我第一次处理非静态 URL。我在这里想念什么?

提前致谢。

【问题讨论】:

    标签: django django-templates django-views django-urls


    【解决方案1】:

    您的 url 正则表达式是错误的 \d+ 任何数字(0 through 9),因此您必须确保您的正则表达式捕获 words-

    url(r'^blog/(?P<blog_id>[^/]+)$', 'blog.views.get_blog'),
    

    您必须确保 blog 指向该特定视图..

    【讨论】:

    • 感谢 Raja,这让我更近了一步,但这并没有调用我的视图函数。
    • 它肯定会调用你的视图函数...请查看更新后的 url
    • 视图甚至没有被调用,没有测试字符串输出,也没有呈现新页面。也许我使用的 uuid 类型有不同的格式? --> 'default=uuid.uuid4'..
    【解决方案2】:

    这样写你的网址:

    url(r'^blog/(?P<uuid>\w*)$', 'blog.views.get_blog'),
    

    像这样设置 blogpost 变量:

    blogpost = Blog.objects.get(uuid=uuid)
    

    并将您的 uuid 的十六进制传递给它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 2021-10-21
      • 2018-10-06
      • 1970-01-01
      • 2021-06-16
      • 2014-05-09
      相关资源
      最近更新 更多