【问题标题】:Caught SyntaxError while rendering: invalid syntax渲染时捕获 SyntaxError:无效语法
【发布时间】:2014-03-27 18:19:51
【问题描述】:

我正在通过《Python Web Development with Django》使用 django1.1 创建一个 django 应用程序“cms”。访问管理页面时出现“TemplateSyntaxError”错误。

这是回溯:

TemplateSyntaxError at /admin/
Caught SyntaxError while rendering: invalid syntax (views.py, line 18)
Request Method: GET
Exception Type: TemplateSyntaxError
Exception Value:    
Caught SyntaxError while rendering: invalid syntax (views.py, line 18)
Exception Location: D:\Program Files\python\lib\site-packages\django\utils\importlib.py          in import_module, line 35
Python Executable:  D:\Program Files\python\python.exe
Python Version: 2.7.6

我的views.py是:

from django.shortcuts import render_to_response, get_object_or_404
from django.db.models import Q
from cms.models import Story, Category
from markdown import markdown
def category(request, slug):
    category = get_object_or_404(Category, slug = slug)
    story_list = Story.objects.filter(category=category)
    heading = "Category: %s " % category.label
    return render_to_response("cms/story_list.html", locals())
def search(request):
    if "q" in request.GET:
        term = request.GET['q']
        story_list = Story.objects.filter(Q(title__contains=term) | (markdown_content__contains=term))
        heading = "Search results"
    return render_to_response("cms/story_list.html", locals())

第 18 行是 story_list = Story.objects.filter(Q(title__contains=term) | (markdown_content__contains=term))

还有 urls.py 在 cms 中:

from django.conf.urls.defaults import *
from cms.models import Story

info_dict = {'queryset': Story.objects.all(), 'template_object_name': 'story' }

urlpatterns = patterns('django.views.generic.list_detail',
    url(r'^(?P<slug>[-\w]+)/$', 'object_detail', info_dict, name="cms-story"),
    url(r'^$', 'object_list', info_dict, name='cms-home'),
)
urlpatterns += patterns('cmsproject.cms.views',
    url(r'^category/(?P<slug>[-\w]+)/$', 'category', name="cms-category"),
    url(r'^search/$', 'search', name="cms-search"),             
)

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    您在第 18 行有一个小错字,您在第二个过滤器上缺少 Q 类:

    应该是:

    story_list = Story.objects.filter(Q(title__contains=term) | Q(markdown_content__contains=term))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 2013-12-19
      相关资源
      最近更新 更多