Jimmy's Code

Want to be a better Coder
^

Python 網頁:Django- 來做一個部落格(2)

2018-10-27

今天,想把Django篇先結束XD

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

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

所以在這裡請編輯models.py

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__ 方法並回傳他要回傳的名稱這樣就可以在後台看到標題了

然後請編輯一下blog/urls.py

...(略)
from django.contrib import admin
from django.urls import path
from mblog import views

urlpatterns = [
    path('', views.homepage, name='homepage'),
    path('admin/', admin.site.urls),

]

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

接下來編輯views.py

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

{% if posts_list %}
    <ul>
    {% for post in posts_list %}
        <li><a href="#">
            {{ post.title }}</a>
        </li>
    {% endfor %}
    </ul>
{% else %}
    <p>沒有文章可以顯示</p>
{% endif %}

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

此時我們的資料夾結構

./
├── blog
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-36.pyc
│   │   ├── settings.cpython-36.pyc
│   │   ├── urls.cpython-36.pyc
│   │   └── wsgi.cpython-36.pyc
│   ├── settings.py
│   ├── urls.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

r567tw

住在台北的一位台東developer,最喜歡"忠心"這個形容詞。這一生希望完成三件事:寫一本書、站在TED演講並且想要成為福音及各種學科的橋梁,希望自己能從基督教的思考框架出發與各學科傾聽、回應、對話