2012-04-20 3 views
0

Существует странная ошибка, когда я открываю URL-адрес с дефисами в slug, хотя SlugField поддерживает дефисы в нем, как указано в документации.Hyphens in SlugField

Таким образом, это ошибка:

Page not found (404) 
Request Method: GET 
Request URL: http://127.0.0.1:8003/dumpster-rental-prices 
Using the URLconf defined in dumpster.urls, Django tried these URL patterns, in this order: 
^admin/ 
^(?P<slug>\w+)/$ 
The current URL, dumpster-rental-prices, didn't match any of these. 

Если я изменить слизняка статьи для dumpster_rental_prices - URL 127.0.0.1:8003/dumpster_rental_prices открывается нормально.

Это models.py из блога приложения:

from django.db import models 

class Post(models.Model): 
    title = models.CharField(max_length = 100) 
    body = models.TextField(max_length = 5000) 
    slug = models.SlugField(max_length = 100) 

    def __unicode__(self): 
     return self.title 

Это urls.py в блоге Foder:

from django.conf.urls import patterns, include, url 
from django.views.generic import DetailView, ListView 
from blog.models import Post 

from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    url(r'^(?P<slug>\w+)/$', 
     DetailView.as_view(
      model=Post, 
      template_name='detail.html')),  

) 

Заранее спасибо за вашу помощь.

+0

То же, что http://stackoverflow.com/questions/5231593/django-prepopulated-fields-break-with-hyphens – user9876

ответ

6

Проблема в вашем регулярном выражении - \w соответствует только буквенно-цифровым символам и символам подчеркивания. Вам нужно что-то вроде r'^(?P<slug>[\w-]+)/$, если вы хотите также сопоставить дефис.

+0

Это помогло. Спасибо! Мне нужно освоить регулярные выражения :) –

Смежные вопросы