2017-08-30 32 views
-1

對於以下URL路由爲blog應用,查詢上通用的顯示視圖 - Django的

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

urlpatterns=[ 
    url(r'^$', ListView.as_view(
        queryset=Post.objects.all().order_by("-date")[:25], 
        template_name="blog/blog.html", 
        ) 
      ) 
] 

模板blog.html是,

{% extends "personal/header.html" %} 

{% block content %} 
    {% for post in object_list %} 
     <h5>{{post.date|date:"Y-m-d"}}<a href="/blog/{{post.id}}"> {{post.title}} </a></h5> 
    {% endfor %} 
{% endblock %} 

其中模型blog應用被定義爲,

class Post(models.Model): 
    title = models.CharField(max_length=140) 
    body = models.TextField() 
    date = models.DateTimeField() 

    def __str__(self): 
     return self.title 

MTV的blog應用程序是結構S作爲,

../blog 
    admin.py 
    apps.py 
    __init__.py 
    migrations 
    models.py 
    templates 
    tests.py 
    urls.py 
    views.p 

問:

{{post.id}}內部作爲主鍵生成,爲表中的每一行,但是,

是什麼/blog/{{post.id}}意味着在模板( blog.html)?

+0

網址的帖子的細節 –

回答

1

當您想要訪問特定的博客時,您需要鏈接到該博客。這就是/blog/{{post.id}}作爲鏈接所做的事情。

so/blog/1給你第一個博客。只有你必須定義url模式,視圖和模板。

url(r'^(?P<id>[^/]+)/$', views.get_blog, name='one_blog'), 

然後在訪問量:

def get_blog(request, id): 
    blog = Blogs.objects.get(id=id) 
    return render(request, 'blogs/one_blog.html', locals()) 

然後在模板文件夾中,創建一個 '博客/ one_blog.html' 文件。最簡單的例子是:

{% extends "personal/header.html" %} 

{% block content %} 
    <h5>{{blog.title}}</h5> 
    {{blog.body}} 
{% endblock %} 

只要確保你瞭解模板的文件夾結構。

1

它只是一個前綴/前綴/ ID /。也可以/條/ 1 ...沒關係

urls.py

urlPatterns=[ 
     url(r'^$', ListView.as_view(
        model=Post, 
        template_name="blog/blog_list.html", 
        ) 
      ) 
     url(r'blog/(?P<pk>[\w-]+)/$', DetailView.as_view(
        model=Post, 
        template_name="blog/blog_detail.html", 
       ) 
      ) 

]