Python

【Python】Djangoでブログを作成する手順とサンプルコード

この記事は約10分で読めます。

 

PythonとDjangoを使用してブログを作成する方法を紹介します。DjangoはPythonで書かれた高レベルなWebフレームワークで、迅速な開発とクリーンな設計を促進します。以下の手順で基本的なブログを作成できます。

 

1. Djangoのインストール

 

まず、Djangoをインストールする必要があります。

 

# Djangoのインストール
pip install django

 

2. Djangoプロジェクトの作成

 

ライブラリのインストールが完了したらDjangoコマンドで新しいプロジェクトを作成します。

django-admin startproject myblog

このコマンドはmyblogという名前の新しいDjangoプロジェクトを作成します。

 

3. アプリケーションの作成

 

ブログ機能を持つアプリケーションをプロジェクトに追加します。

$ cd myblog
$ python manage.py startapp blog

これでblogという名前のアプリケーションが作成されます。

 

4. モデルの作成

 

ブログポストをデータベースに保存するためのモデルをblog/models.pyに下記を定義します。

 

from django.db import models
from django.utils import timezone

class Post(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

 

5. データベースのマイグレーション

 

モデルの変更をデータベースに適用します。

 

$ python manage.py makemigrations blog
$ python manage.py migrate

6. Django Adminの設定

 

Djangoの管理サイトでブログポストを管理できるようにします。

blog/admin.pyに以下を追加します。

 

from django.contrib import admin
from .models import Post

admin.site.register(Post)

 

INSTALLED_APPSの設定 myblog/settings.pyファイルを開き、以下を追記します

 

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',  # この行を追加
]

 

 

INSTALLED_APPS設定にあなたのアプリケーション(この場合はblog)が含まれていることを確認します。INSTALLED_APPSはDjangoにどのアプリケーションがプロジェクトの一部であるかを伝えます。

 

7. ビューの作成

ブログポストを表示するためのビューをblog/views.pyに定義します。

 

from django.shortcuts import render
from .models import Post
from django.utils import timezone

def post_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'blog/post_list.html', {'posts': posts})

def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    return render(request, 'blog/post_detail.html', {'post': post})

 

8. URLの設定

 

ビューにURLを割り当てます。myblog/urls.pyにblogアプリケーションのURLを含めます。

 

from django.urls import path, include
from django.contrib import admin

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]

 

そして、blog/urls.pyを作成して以下を追加します。

詳細ビューに対応するURLパターンを探します。これは通常、以下のような形式で記述されます。

 

from django.urls import path
from . import views

urlpatterns = [
path('', views.post_list, name='post_list'),
path('post/<int:pk>/', views.post_detail, name='post_detail')
]


 

9. テンプレートの作成

 

ブログ記事一覧を表示するためのHTMLテンプレートをblog/templates/blog/post_list.htmlに作成します。

 

<html>
<head>
<title>Django Blog</title>
</head>
<body>
<div>
<h1>Posts</h1>
{% for post in posts %}
<div>
<h2>{{ post.title }}</h2>
<p>{{ post.text }}</p>
</div>
{% endfor %}
</div>
</body>
</html>

 

次にpost_detail ビューで使用するテンプレートファイルを blog/templates/blog ディレクトリ内に作成します(ディレクトリが存在しない場合は作成してください)。以下は、そのテンプレートの基本的な例です。

 

post_detail.html

<!– blog/templates/blog/post_detail.html –>
<!DOCTYPE html>
<html>
<head>
<title>{{ post.title }}</title>
</head>
<body>
<div>
<h1>{{ post.title }}</h1>
<p>{{ post.text|linebreaks }}</p>
</div>
</body>
</html>

 

このテンプレートは、ビューから渡された post オブジェクトの title と text フィールドを使用して、記事のタイトルと内容を表示します。linebreaks フィルターは、テキストの改行をHTMLの段落タグに変換します。

 

10。マイグレーションの更新

 

マイグレーションファイルの作成: Djangoにモデルの変更を検出させ、それに基づいてマイグレーションファイルを作成します。これは、モデルの変更をデータベーススキーマに反映させるための”設計図”を作るようなものです。

 

$ python manage.py makemigrations blog
$ python manage.py migrate

 

11.管理者情報の追加

 

以下のコマンドで管理者ユーザー(スーパーユーザー)の情報を登録します

 

$ python manage.py createsuperuser

 

メールアドレス・パスワードは任意のものを設定してください

 

12. サーバの起動

 

開発サーバを起動して、ブログが正しく動作しているか確認します。

 

# アプリを起動する
python manage.py runserver

 

ブラウザでhttp://127.0.0.1:8000/にアクセスして、Postsとブログが表示されていることを確認します。

 

 

13.管理者画面にログインする

 

サーバーが起動しているのを確認出来たら管理画面のURLにアクセスします。 通常、管理画面のURLは http://127.0.0.1:8000/admin/ です。

(サーバーを異なるポートで起動した場合は、URLのポート番号を適宜変更してください。)

 

以下のような画面が表示されるので11で設定した認証情報を入力してください

 

 

ログイン後、Django Adminのダッシュボードにアクセスできます。ここから、ユーザーの管理、作成したモデルの追加・編集・削除など、さまざまな操作が可能です。

 

Djangoの管理画面は非常に強力で、アプリケーションのデータ管理を直感的に行うことができます。必要に応じて、管理画面をカスタマイズして、特定のユーザーのニーズに合わせた管理インターフェースを作成することも可能です。

 

14。記事の追加

 

記事の追加は管理画面のPostsの横にある「add」をクリックします

 

 

クリックすると記事一覧画面に移動するので、適当な題名と記事の内容を入力します

最後にPublished dateのDateとTimeをtoday nowをそれぞれクリックして現在時刻を入力し「SAVE」をクリックすれば投稿完了です

 

 

15.投稿内容の確認

 

正常に投稿できていればホーム画面にアクセスすると投稿した情報が表示されています

 

 

個別ページにアクセスするには「http://127.0.0.1:8000/post/1/」にアクセスします

http://127.0.0.1:8000/postがルートで1が記事の内部IDです。URLの形については「8. URLの設定

」で記述したblog/urls.pyの詳細ビューに対応するURLパターンが対応しています

 

ちなみに個別記事は以下のような感じで表示されます

 

 

デザインなどはここからHTMLファイルを編集してBootstrapなどを導入してきれいにしていく感じになります。

 

関連記事:初心者でもわかるBootstrapの使い方・導入方法

 

終わり

 

これで、基本的なブログがDjangoで作成できました。さらに機能を拡張して、フォームの追加、ユーザ認証、CSSのカスタマイズなどを行うことができます。

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

タイトルとURLをコピーしました