2017-02-13 4 views
0

私はPython 2.7とDjango 1.10(私の最初のもの)を使ってアプリケーションを構築していますが、今は製品の詳細ページでslugを使ってリンクを作成するのに問題があります。Python/Django:URLでSlugを使用する際のトラブル

手動で商品のURLを入力すると、うまく動作します(/ courses/analise-swot /)。 details.htmlページを読み込み、データベースの情報を使用して適切に構築します。ここで私が得ているエラーは、次のとおりです。models.pyで

class Course(models.Model): 

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

はget_absolute_urlメソッド:私はmodels.pyでスラグを作成

クラス:ここ

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. 

は私のコードです:

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

全体urls.py:

views.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'), 

要求:

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) 

答えて

0

get_absolute_url方法はタプルを返すべきではありません。

オブジェクトに対して に正規のURLを計算する方法をDjangoに伝えるためにget_absolute_url()メソッドを定義します。呼び出し元にこのメソッドは、 〜の文字列を返します。 HTTPを介してオブジェクトを参照するために使用できます。


次のようなものは、より多くのそれのようになります。

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

どうもありがとう!あなたの提案はうまくいった! def get_absolute_url(self): "/ courses /%s /"%self.slugを返します。 –

関連する問題