2016-03-19 19 views
-2

進出口新的Django和希望轉換ID /包段塞,我想讓網址是友好的或易於理解Django的轉換ID段塞

要拍URL http://127.0.0.1:8000/1/http://127.0.0.1:8000/hello/

Model.py

class Post(models.Model): 
    title=models.CharField(max_length=200) 
    description=models.TextField(max_length=10000) 
    pub_date=models.DateTimeField(auto_now_add=True) 
    comments=models.CharField(max_length=200, blank=True) 
    slug = models.SlugField(max_length=40, unique=True) 

    def __unicode__(self): 
     return self.title 

    def description_as_list(self): 
     return self.description.split('\n') 

admin.py

class PostAdmin(admin.ModelAdmin): 
    list_display=['title','description'] 
    prepopulated_fields = {'slug': ('title',)} 

    class Meta: 
     model = Post 

admin.site.register(Post,PostAdmin) 

urls.py

urlpatterns = [ 

    url(r'^$', views.PostListView.as_view(),name='home'), 
    url(r'^(?P<slug>[\w-]+)/$', views.detail, name='detail'), 
] 

views.py

class PostListView(ListView): 
    model = Post 
    template_name = 'blog_post.html' 
    queryset = Post.objects.order_by('-pub_date') 
    paginate_by = 2 

def detail(request, id): 
    posts = Post.objects.get(id=id) 
    return render(request, "blog_detail.html", {'posts': posts,}) 

模板

{% for threads in object_list %} 
    <p class="blog-post-title"><a href="{% url 'detail' slug=threads.id %}">{{ threads.title }}</a></p> 
    <hr /> 
{% endfor %} 

錯誤是這樣獲得的......更重要的是改變是 enter image description here

任何幫助表示讚賞,使URL可讀。謝謝davance

+0

您的看法,採取和id,而您的URL模式需要一個slu。。 –

+0

@ AntoinePinsard ..要做什麼改變.. – Coeus

+5

你應該找出自己。或者你明天會問同樣的問題,因爲你昨天問過相同的問題:http://stackoverflow.com/questions/36092955/django-noreversematch-at-qw-1 –

回答

1

要實現你的目標,你需要的蛞蝓參數傳遞到views.py像這樣的細節功能:

def detail(request, slug): 
    posts = Post.objects.get(slug=slug) 
    return render(request, "blog_detail.html", {'posts': posts,}) 

此外,您blog_post.html模板應接受該URL蛞蝓像這樣:

{% for threads in object_list %} 
    <p class="blog-post-title"><a href="{% url 'detail' slug=threads.slug %}">{{ threads.title }}</a></p> 
    <hr /> 
{% endfor %} 

當然,您需要有一個詳細視圖的blog_detail模板。