Python / Django:在URL

时间:2017-02-13 23:05:40

标签: python django slug

我正在使用Python 2.7和Django 1.10(我的第一个)构建应用程序,现在我无法使用slugs为产品详细信息页面创建链接。

当我手动输入产品网址时,它可以正常工作(/ courses / analise-swot /)。它读取details.html页面并使用数据库中的信息适当地构建它。以下是我遇到的错误:

Page not found (404)
Request Method: GET
Request URL:
Using the URLconf defined in simplemooc.urls, Django tried these URL patterns, in this order:
^ ^$ [name='home']
^ ^contato/ [name='contato']
^courses/ ^$ [name='cursos']
^courses/ ^(?P<slug>[A-Za-z0-9_\-]+)/$ [name='details']
^admin/
^media\/(?P<path>.*)$
The current URL, courses/(u'details', (), {u'slug': u'analise-swot'}),       didn't match any of these.

这是我的代码:

我在models.py中创建slug的类:

class Course(models.Model):

    name = models.CharField('Nome', max_length=100)
    slug = models.SlugField('Atalho', max_length=100, unique=True)
models.py中的

get_absolute_url方法:

def get_absolute_url(self):
    return ('details', (), {'slug': self.slug})

整个urls.py:

from django.conf.urls import include, url

from . import views

urlpatterns = [
url(r'^$', views.cursos, name='cursos'),
url(r'^(?P<slug>[A-Za-z0-9_\-]+)/$', views.details, name='details'),
在views.py中请求

def details(request, slug):
courses = get_object_or_404(Course, slug=slug)
context = {
    'course': courses
}
template_name = 'courses/details.html'
return render(request, template_name, context)

1 个答案:

答案 0 :(得分:0)

get_absolute_url方法不应返回元组。

  

定义一个get_absolute_url()方法来告诉Django如何计算   对象的规范URL。对于呼叫者,应该出现此方法   返回一个字符串,可用于引用该对象   HTTP。

以下内容更像是:

def get_absolute_url(self):
    return '/%s/' % self.slug