저는 장고 앱의 URL에 슬러그를 추가하려고합니다.Django - 어떻게 퍼머 링크를 "쓸모없는"슬러그로 작업 할 수 있습니까?
http://example.com/foo/123/
난과 같이 'slugified'URL을 추가 할 :
http://example.com/foo/123/foo-name-here
내가 그것을 얻을 수
현재,이 같은 URL과 함께 잘 작동 페이지가 urlconf를 수정하고 뷰 기능에 값을 추가하면됩니다.
#urls.py
ulpatterns = patterns('project.app.views',
url(r'^foo/(?P<foo_id>\d+)/(?P<name_slug>\w+)/$', 'foo_detail', name='foo_detail'),
)
#views.py:
def foo_detail(request, foo_id, name_slug):
# stuff here, name slug is just discarded
t 그는 슬러그가 잘 작동합니다.
그러나 내 문제는 내가 @models.permalink
을 사용할 때입니다. 내 템플릿에 {{ foo.get_absolute_url }}
를 호출 할 때마다
@models.permalink
def get_absolute_url(self):
return ('foo_detail', [str(self.id),])
하지만, 내 변경 후, 결과는 항상 빈 문자열 : 내 Foo
모델의 경우
, 나는 잘 작동 다음을 가지고하는 데 사용됩니다. 내가 돌아 가기 전에 print slugify(self.name)
를 추가 할 경우 slugified 이름이 잘 콘솔에 표시되는
from django.template.defaultfilters import slugify
# attempt 1
@models.permalink
def get_absolute_url(self):
return ('foo_detail', [str(self.id), slugify(self.name)])
# attempt 2
@models.permalink
def get_absolute_url(self):
return ('foo_detail',(), {
'foo_id': str(self.id),
'name_slug': slugify(self.name),
})
참고 :
나는 노력하고 있습니다 어느 것도 get_absolute_url
에 대한 다음과 같은 두 가지 교체를 시도했다.
내 템플릿에 {{ foo.get_absolute_url }}
을 호출 할 때 결과는 항상 빈 문자열이며 오류가 발생하지 않습니다.
나는 return '/foo/%s/%s' % (str(self.id), slugify(self.name))
으로 메소드를 대체 할 수 있지만, permalink가 작동하도록하여 URL이 한 곳에서만 정의되도록하려고합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
(?P<name_slug>\w+)
이 slugify 어디 하이픈을 추가 : 나는이 문제에 달려 있기 때문에
나는이 일을하는 방식이 이상하고 불필요하다는 것을 알아야한다 : urlconf 또는 view 함수에'name_slug'를 유지할 필요가 없다. 응답자가 내 문제를 지적한 후에 나는'r '^ foo/(? P \ d +)/([\ w -] +)/$''와'foo_detail (request, foo_id) :' 각각 청소기입니다. –
어떤 퍼머 링크 방법을 사용 했습니까? 나는 똑같은 것을보고있다 ... – thornomad
@thornomad 시도가 내 질문에 1 번으로 끝났다. 내 url 패턴을 가지고있는'get_absolute_url' 메소드에 문제가 없었습니다. –