Django開發(fā)-2

模板修改

視圖

  • 修改views.py
...
from .models import Post
def index(request):
    post_list = Post.objects.all().order_by("-create_time") #按照創(chuàng)建時(shí)間降序排列
    context = {'post_list':post_list}
    return render(request, 'blog/index.html', context=context)

模板

文章列表

  • 刪除index.html的多余article龄砰,只保留1個(gè)

修改模板

遍歷博客

                {% for post in post_list %}
                <article class="post post-{{ post.id }}">
                    ...
                </article>
                {% empty %}
                    <div class="no-post">暫時(shí)沒有發(fā)布的文章致扯!</div>
                {% endfor %}

標(biāo)題

<h1 class="entry-title">
    <a href="single.html">{{ post.title }}</a>
</h1>

詳情

<div class="entry-meta">
    <span class="post-category"><a href="#">{{ post.category.name }}</a></span>
    <span class="post-date"><a href="#"><time class="entry-date"
                                              datetime="{{ post.create_time }}">{{ post.create_time }}</time></a></span>
    <span class="post-author"><a href="#">{{ post.author.username }}</a></span>
...
</div>

摘要

<div class="entry-content clearfix">
    <p>{{ post.excerpt }}</p>
    ...

后臺(tái)

注冊(cè)模型

  • 修改blog/admin.py
from .models import Category,Tag,Post

admin.site.register(Category)
admin.site.register(Tag)
admin.site.register(Post)

漢化

  • 應(yīng)用漢化, apps.py
class BlogConfig(AppConfig):
    name = 'blog'
    verbose_name = '博客'
  • 模型漢化, models.py
class Category(models.Model):
...
    class Meta:
        verbose_name='類別'
        verbose_name_plural = verbose_name  #復(fù)數(shù)形式
class Tag(models.Model):
...
    class Meta:
        verbose_name='標(biāo)簽'
        verbose_name_plural = verbose_name  #復(fù)數(shù)形式
class Post(models.Model):
...
    class Meta:
        verbose_name='文章'
        verbose_name_plural = verbose_name  #復(fù)數(shù)形式
  • 返回結(jié)果(對(duì)象->字符串)
class Category(models.Model):
...
    def __str__(self):
        return self.name
class Tag(models.Model):
...
    def __str__(self):
        return self.name
class Post(models.Model):
...
    def __str__(self):
        return self.title

定制后臺(tái)

  • 只顯示需要的字段
admin.site.register(Category)
admin.site.register(Tag)

class PostAdmin(admin.ModelAdmin):
    list_display = ['title','create_time','modified_time','category','author']

admin.site.register(Post,PostAdmin)

  • 控制表單展示的字段和填充當(dāng)前用戶作為作者

    admin.py

...
class PostAdmin(admin.ModelAdmin):
    list_display = ['title','create_time','modified_time','category','author']
    fields = ['title','body','excerpt','category','tags']
    
    def save_model(self, request, obj, form, change):
        obj.author = request.user #當(dāng)前用戶賦值
        super().save_model(request, obj, form, change)
...
  • 自動(dòng)填充創(chuàng)建時(shí)間和修改時(shí)間

    models.py

from django.utils import timezone
class Post(models.Model):
...
    create_time = models.DateTimeField(verbose_name='創(chuàng)建時(shí)間',default=timezone.now)
...
    def save(self, *args, **kwargs):
        self.modified_time = timezone.now()  #修改時(shí)間的自動(dòng)調(diào)整
        super().save(*args,**kwargs)

詳情頁(yè)

URL映射

  • url綁定

    blog/urls.py

    urlpatterns = [
        path(r'', views.index, name='index'),
        path('posts/<int:pk>', views.detail, name='detail')
    ]
    
  • 視圖

    views.py

    from django.shortcuts import render,get_object_or_404
    ...
    def detail(request,pk):
        post = get_object_or_404(Post, pk=pk)
        context = {'post':post}
        return render(request,'blog/detail.html',context)
    
  • 模板

    • 把single.html拷貝到templates/blog目錄,更名為detail.html

    • blog/urls.py增加app_name

      app_name = 'blog'
      ...
      
    • index.html

      <header class="entry-header">
          <h1 class="entry-title">
              <a href="{{ post.get_absolute_url }}">{{ post.title }}</a>
          </h1>
      
    • models.py

      from django.urls import reverse
      ...
      class Post(models.Model):
      ...
          def get_absolute_url(self):
              return reverse('blog:detail', kwargs={'pk':self.pk})
      

模板繼承

模板頁(yè)

  • 創(chuàng)建templates/base.html姑子,把index.html的內(nèi)容拷貝過(guò)來(lái),修改如下:

    <div class="content-body">
    ...
                <main class="col-md-8">
                    {% block main %}
                    {% endblock main %}
                </main>
                <aside class="col-md-4">
                    {% block aside %}
                    {% endblock aside %}
                </aside>
    ...
    </div>
    

主頁(yè)繼承模板

  • 修改index.html

    {% extends 'base.html' %}
    {% block main %}
                    {% for post in post_list %}
                    <article class="post post-{{ post.id }}">
                       ...
                    </article>
                    {% empty %}
                        <div class="no-post">暫時(shí)沒有發(fā)布的文章换帜!</div>
                    {% endfor %}
    
                    <div class="pagination">
                    ...
                    </div>
    {% endblock main %}
    
    

詳情頁(yè)繼承模板

{% extends 'base.html' %}
{% block main %}
                <article class="post post-{{ post.pk }}">
                    <header class="entry-header">
                        <h1 class="entry-title">{{ post.title }}</h1>
                        <div class="entry-meta">
                            <span class="post-category"><a href="#">{{ post.category.name }}</a></span>
                            <span class="post-date"><a href="#"><time class="entry-date"
                                                                      datetime="{{ post.create_time }}">{{ post.create_time }}</time></a></span>
                            <span class="post-author"><a href="#">{{ post.author.username }}</a></span>
                            <span class="comments-link"><a href="#">4 評(píng)論</a></span>
                            <span class="views-count"><a href="#">588 閱讀</a></span>
                        </div>
                    </header>
                    <div class="entry-content clearfix">
                        {{ post.body }}
                    </div>
                </article>
                <section class="comment-area" id="comment-area">
                    ...
{% endblock main %}
{% block aside %}
                <div class="widget widget-content">
                    ...
                </div>
{% endblock aside %}

  • 靜態(tài)文件處理

    把/static 移動(dòng)到/blog目錄下藏雏,并重啟runserver

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市找爱,隨后出現(xiàn)的幾起案子梗顺,更是在濱河造成了極大的恐慌,老刑警劉巖车摄,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寺谤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡吮播,警方通過(guò)查閱死者的電腦和手機(jī)变屁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)意狠,“玉大人粟关,你說(shuō)我怎么就攤上這事』犯辏” “怎么了闷板?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)院塞。 經(jīng)常有香客問(wèn)我遮晚,道長(zhǎng),這世上最難降的妖魔是什么拦止? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任县遣,我火速辦了婚禮糜颠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘萧求。我一直安慰自己括蝠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布饭聚。 她就那樣靜靜地躺著忌警,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秒梳。 梳的紋絲不亂的頭發(fā)上法绵,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音酪碘,去河邊找鬼朋譬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛兴垦,可吹牛的內(nèi)容都是我干的徙赢。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼探越,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼狡赐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起钦幔,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤枕屉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后鲤氢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搀擂,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年卷玉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哨颂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡相种,死狀恐怖威恼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚂子,我是刑警寧澤沃测,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站食茎,受9級(jí)特大地震影響蒂破,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜别渔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一附迷、第九天 我趴在偏房一處隱蔽的房頂上張望惧互。 院中可真熱鬧,春花似錦喇伯、人聲如沸喊儡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)艾猜。三九已至,卻和暖如春捻悯,著一層夾襖步出監(jiān)牢的瞬間匆赃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工今缚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留算柳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓姓言,卻偏偏與公主長(zhǎng)得像瞬项,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子何荚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容