0

ドキュメントに示されているように SlugField はハイフンをサポートしていますが、スラッグにハイフンを含む URL を開くと奇妙なエラーが発生します。

したがって、これはエラーです:

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

これはブログ foder の urls.py です。

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

)

よろしくお願いいたします。

4

1 に答える 1

6

問題は正規表現です-\w英数字とアンダースコアのみに一致します。r'^(?P<slug>[\w-]+)/$ハイフンも一致させたい場合は、次のようなものが必要です。

于 2012-04-20T20:47:21.107 に答える