models.py中的django python slug变量
当我按下搜索按钮时,它显示 找不到页面(404) 没有与给定查询匹配的类别 我的观点models.py中的django python slug变量,python,django,Python,Django,当我按下搜索按钮时,它显示 找不到页面(404) 没有与给定查询匹配的类别 我的观点 def search_in_category(request, slug): # reset the search params, if present try: del request.session['search'] except KeyError: pass return search_results(request, slug) def search_results(request,
def search_in_category(request, slug):
# reset the search params, if present
try:
del request.session['search']
except KeyError:
pass
return search_results(request, slug)
def search_results(request, slug):
category = get_object_or_404(Category, slug=slug)
fields = list(category.field_set.all())
fields += list(Field.objects.filter(category=None))
fieldsLeft = [field.name for field in fields]
if request.method == "POST" or 'search' in request.session:
ads = category.ad_set.filter(active=True,
expires_on__gt=datetime.datetime.now())
# A request dictionary with keys defined for all
# fields in the category.
post = {}
if 'search' in request.session:
post.update(request.session['search'])
else:
post.update(request.POST)
sforms = prepare_sforms(fields, fieldsLeft, post)
isValid = True
for f in sforms:
# TODO: this assumes the form is not required
# (it's a search form after all)
if not f.is_valid() and not f.is_empty():
isValid = False
if isValid:
if request.method == 'POST':
request.session['search'] = {}
request.session['search'].update(request.POST)
return redirect('classifieds_browse_search_results', slug=slug)
for f in sforms:
ads = f.filter(ads)
if ads.count() == 0:
return render_to_response('classifieds/list.html',
{'no_results': True,
'category': category},
context_instance=RequestContext(request))
else:
context = context_sortable(request, ads)
context['category'] = category
return render_to_response('classifieds/list.html', context,
context_instance=RequestContext(request))
else:
sforms = prepare_sforms(fields, fieldsLeft)
return render_to_response('classifieds/search.html',
{'forms': sforms, 'category': category},
context_instance=RequestContext(request))
My models.py
class Category(models.Model):
site = models.ForeignKey(Site)
template_prefix = models.CharField(max_length=200, blank=True)
name = models.CharField(max_length=200)
slug = models.SlugField()
enable_contact_form_upload = models.BooleanField(default=False)
contact_form_upload_max_size = models.IntegerField(default=2 ** 20)
contact_form_upload_file_extensions = models.CharField(max_length=200,
default="txt,doc,odf,pdf")
images_max_count = models.IntegerField(default=0)
images_max_width = models.IntegerField(help_text=_(u'Maximum width in pixels.'),
default=1024)
images_max_height = models.IntegerField(help_text=_(u'Maximum height in pixels.'),
default=1024)
images_max_size = models.IntegerField(help_text=_(u'Maximum size in bytes.'),
default=2 ** 20)
images_allowed_formats = models.ManyToManyField(ImageFormat, blank=True)
description = models.TextField(default='')
sortby_fields = models.CharField(max_length=200,
help_text=_(u'A comma separated list of field names that should show up as sorting options.'),
blank=True)
sort_order = models.PositiveIntegerField(default=0)
def __unicode__(self):
return self.name + u' Category'
class Meta:
verbose_name_plural = u'categories'
我的url
url(r'^search/(?P<slug>[-\w]+)/$', 'browse.search_in_category',
name='classifieds_browse_category_search'),
url(r'^search/results/(?P<slug>[-\w]+)/$', 'browse.search_results',
name='classifieds_browse_search_results'),
url(r'^search/(?P[-\w]+)/$,“browse.search_in_category”,
name='classifieds\u browse\u category\u search'),
url(r'^search/results/(?P[-\w]+)/$,“browse.search\u results”,
name='classifieds\u browse\u search\u results'),
这是我的代码,为什么我得到404错误?要修复此错误,我必须做什么?您不能这样做
return search_results(request, slug)
不要这样做
return redirect(reverse('classifieds_browse_search_results', kwargs={'slug':slug}))
别忘了进口
from django.core.urlresolvers import reverse
from django.shortcuts import redirect
是的,我更改了你的代码..但是当我点击搜索锚链接时,它再次抛出相同的页面未找到错误。
在返回搜索结果(请求,slug)
前打印slug
,并告诉我它是什么;)@Geetha@Geetha控制台中显示了什么?浏览器中没有打印!是的,我也检查了控制台…验证模型。。。发现0个错误Django版本1.4.3,使用“设置”开发服务器正在运行,请使用CTRL-BREAK退出服务器。[01/Dec/2014 12:45:18]“GET/HTTP/1.1”200 1925[01/Dec/2014 12:45:19]“GET/search/bike/HTTP/1.1”200 2233[01/Dec/2014 12:45:27]“POST/search/bike/HTTP/1.1”3020[01/Dec/2014 12:45:27]“GET/search/results/bike/HTTP/1.1”200 1947[01/Dec/2014 12:45:28]“GET/search/2/HTTP/1.1”404 1615接受我的回答吧,这样你的声誉就会提高,然后我们可以在这里聊天。以你现在的名声,你不能聊天