今天,想把Django篇先結束XD

昨天,我們已經將post這個表註冊到後台並且已經migrate它現在,我們要開始做前端的畫面並且能夠顯示。 這非常的陽春,如果需要更加深研的請歡迎自行搜尋

首先你會好奇為什麼在後台儲存資料卻是post object,原因是你沒有設定要顯示的什麼東西

所以在這裡請編輯models.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from django.db import models
from django.utils import timezone

# Create your models here.
class Post(models.Model):
    title = models.CharField(max_length=200)
    slug = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.title

加入 _str__ 方法並回傳他要回傳的名稱這樣就可以在後台看到標題了

1
2
3
4
5
6
7
# ...(略)
from django.contrib import admin
from mblog import views

    path('', views.homepage, name='homepage'),

]

將mblog/view.py引入,然後宣告首頁指向他

接下來編輯views.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from django.shortcuts import render
from .models import Post

# Create your views here.
def homepage(request):
    posts = Post.objects.all()
    context = {
        'posts_list': posts
    }
    return render(request, 'homepage.html', context)

定義一個hombepage 方法,然後宣告他要傳的template 為homepage.html

最後請在mblog 裡面新建一個資料夾:templates,裡面有一個新檔案加入homepage.html

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{% if posts_list %}
    <ul>
    {% for post in posts_list %}
        <li><a href="#">
            {{ post.title }}</a>
        </li>
    {% endfor %}
    </ul>
{% else %}
    沒有文章可以顯示
{% endif %}

這樣一個簡單的文章列表就會產生

此時我們的資料夾結構

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
├── blog
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cPython-36.pyc
│   │   ├── settings.cPython-36.pyc
│   │   └── wsgi.cPython-36.pyc
│   ├── settings.py
│   └── wsgi.py
├── db.sqlite3
├── manage.py
└── mblog
    ├── __init__.py
    ├── __pycache__
    │   ├── __init__.cPython-36.pyc
    │   ├── admin.cPython-36.pyc
    │   ├── apps.cPython-36.pyc
    │   ├── models.cPython-36.pyc
    │   └── views.cPython-36.pyc
    ├── admin.py
    ├── apps.py
    ├── migrations
    │   ├── 0001_initial.py
    │   ├── __init__.py
    │   └── __pycache__
    │       ├── 0001_initial.cPython-36.pyc
    │       └── __init__.cPython-36.pyc
    ├── models.py
    ├── templates
    │   └── homepage.html
    ├── tests.py
    └── views.py