Python Django Slug生成的URL返回:';没有与给定查询匹配的基金;
我试图使用slug生成url,但是无论我在哪里访问url,我都会得到“Page not found at/funds/[slug\u generated\u value]”Python Django Slug生成的URL返回:';没有与给定查询匹配的基金;,python,django,django-models,django-views,django-urls,Python,Django,Django Models,Django Views,Django Urls,我试图使用slug生成url,但是无论我在哪里访问url,我都会得到“Page not found at/funds/[slug\u generated\u value]” Raised by: apps.funds.views.details No Fund matches the given query 这是my models.py,我使用fund.name生成fund_id以创建首字母缩略词,并添加DateDate的datetime值减去小时、分钟、秒值: class Fund(mod
Raised by: apps.funds.views.details
No Fund matches the given query
这是my models.py,我使用fund.name生成fund_id以创建首字母缩略词,并添加DateDate的datetime值减去小时、分钟、秒值:
class Fund(models.Model):
name = models.CharField(max_length=128, unique=True)
description = models.TextField()
duration = models.CharField(max_length=10)
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Fund, self).save(*args, **kwargs)
def __str__(self):
return self.name
class OfferedFunds(models.Model):
fund_id = models.CharField(max_length=55, blank=True)
fund_name = models.ForeignKey(Fund)
deadline = models.DateTimeField('Deadline')
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
output = ''
for i in self.fund_name.name.upper().split():
output += i[0]
deadline = str(self.deadline)[:-15]
deadline = deadline.replace('-', '')
random_number = random.randint(1,9)
self.fund_id = '%s%s%s' % (output, deadline, random_number)
self.slug = slugify(self.fund_id)
super(OfferedFunds, self).save(*args, **kwargs)
class Meta:
verbose_name_plural = "Offered funds"
def __str__(self):
return '%s' % (self.fund_id)
和我对应的views.py:
def details(request, slug):
context_dict = {}
fund = get_object_or_404(Fund, slug=slug)
context_dict['fund'] = fund
offered_funds = OfferedFunds.objects.filter(fund_name=fund, deadline__gte=timezone.now()).order_by('deadline')
context_dict['offered_funds'] = offered_funds
return render(request, 'funds/details.html', context_dict)
def of_details(request, slug):
context_dict = {}
of = get_object_or_404(OfferedFunds, slug=slug)
context_dict['of'] = of
return render(request, 'funds/offered-funds-details.html', context_dict)
最后是my URL.py:
url(r'^(?P<slug>[\w-]+)/$', views.details, name='details'),
url(r'^(?P<slug>[\w-]+)/$', views.of_details, name='of details'),
url(r'^(?P[\w-]+)/$,views.details,name='details'),
url(r'^(?P[\w-]+)/$,views.of_details,name='of details'),
My details()视图工作正常,但_details()视图不起作用。如果我取出details()视图,则_details()的作用是有效的。有人知道我如何解决这个错误吗?谢谢好的,正如用户评论中指出的那样,我的URL太相似了,所以我改变了:
url(r'^(?P<slug>[\w-]+)/$', views.of_details, name='of details'),
url(r'^(?P[\w-]+)/$,views.of_details,name='of details'),
致:
url(r'^det/(?P[\w-]+)/$,views.of_details,name='of details'),
这是有效的。Django如何区分相同的URL?您的两个正则表达式是相同的,因此当Django搜索适用的URL匹配项时,它将始终实现
视图。详细信息
函数就是这样。更改为1r'^det/(?P[\w-]+)/$”
,效果非常好
url(r'^det/(?P<slug>[\w-]+)/$', views.of_details, name='of details'),