【问题标题】:is it the urls or the views?是网址还是视图?
【发布时间】:2013-01-21 04:33:17
【问题描述】:

似乎它应该可以工作......但是...... 这是views.py

from django.shortcuts import render_to_response
from django.template import RequestContext
from create_lesson.models import Lesson
from django.contrib.auth.models import User
from add_material.models import Materials

def Use_Lesson(request, lesson):
    user=request.user
    lessons = Lesson.objects.get(slug=lesson)
    lessons.attributes=Materials.objects.filter(lesson=lessons.pk)
    context = {'user':user,'lesson':lessons,}
    return render_to_response('use_lesson/use_lesson.html', context, context_instance=RequestContext(request))

urls.py 看起来像这样

from django.conf.urls.defaults import *

urlpatterns= patterns('',
    (r'^browse/', 'use_lesson.views.Browse'),
    (r'^lesson/(?P<lesson>[a-zA-Z0-9-]+)', 'use_lesson.views.Use_Lesson'),   

这是基本的错误信息 请求方法:GET 请求网址:.../lesson/superfarts Django 版本:1.4.1 异常类型:DoesNotExist 异常值:课程匹配查询不存在。

它是说问题出在这里:课程 = Lesson.objects.get(slug=lesson)

当我在“python manage.py shell”中执行相同的查询时 我得到了我正在寻找的结果。

【问题讨论】:

  • 在 shell 上验证您正在执行完全相同的查询,lesson 的值完全相同。
  • 具体来说,确保 manage.py shell 中的 Lesson.objects.get(slug='superfarts') 为您提供预期的结果。

标签: django


【解决方案1】:

尝试将其更改为:

(r'^lesson/(?P<lesson>[a-zA-Z0-9-]+)/$', 'use_lesson.views.Use_Lesson')

【讨论】:

  • 这个成功了,谢谢!但我真的不明白其中的区别?
  • 我现在再看一遍,看来您的原始网址应该可以使用。你能在视图中打印lesson var 吗?
【解决方案2】:

一个 slugfield 在正则表达式中最好用 \W 表示,它等于 [a-zA-Z0-9_]

(r'^lesson/(?P<lesson>\W+)/$', 'use_lesson.views.Use_Lesson')

【讨论】:

  • 谢谢...这看起来应该可以工作,但由于某种原因它没有?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 1970-01-01
  • 2017-05-25
相关资源
最近更新 更多