Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

【Django】簡単なSNSアプリを開発する③~ルーティング設定~


スポンサードリンク
 

f:id:ShotaNukumizu_1000:20211205071412p:plain

おはようございます。Shotaです。

今回の記事では、前回と同様にDjangoで簡単なSNSアプリを開発するための方法を解説していきます。

今回の記事では、ルーティング設定について軽く解説します。

▼前回の記事はコチラ

shotanukumizu-1000.hatenablog.com

▼初回の記事はコチラ

shotanukumizu-1000.hatenablog.com



ルーティング設定

最初に_project/urls.pyを作成し、以下のコードを書いてください。

#_project/urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings

urlpatterns = [
    path('admin/', admin.site.urls),
    path('mdeditor/', include('mdeditor.urls')),
    path('', include('_app.urls')), #追加
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

以下のコードを新しく変数urlapatternsに追加することで、_appフォルダにあるurls.pyに書かれているURLの処理をDjango側に反映させられます。

 path('', include('_app.urls')),

次は、_app/urls.pyを新しく作成して、以下のコードを書いてください。

#_app/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index_func, name='index'), #後で追記
]

次は、templatesフォルダにアクセスして新しくindex.htmlを作成してください。そして、以下のコードを書いてください。

<!----templates/index.html---->
{% extends 'base.html' %}

{% block title %}
<title>SNSApplication</title>
{% endblock title %}

{% block content %}
<h1>Hello Python.</h1>
{% endblock content %}
{% extends 'base.html' %}

これをhtmlファイルの冒頭に書くことで、templates/base.htmlのコードやその構造をそのまま継承できるようになります。

次に、_app/views.pyにアクセスして、以下のコードを書いてください。

#_app/views.py
from django.shortcuts import render

def index_func(request):
    return render(request, 'index.html', {})

これを書くことで、htmlにDjangoの処理を追加できるようになります。

ここで、以下のコードについて軽く説明を入れておきます。

def index_func(request):
    return render(request, 'index.html', {})

こちらはtemplate/index.htmlに遷移させるための処理を書いています。これがないとエラーが発生しますので十分に注意してください。

主なコードの構造は以下のとおりです。

  • 関数index_funcを定義し、第一引数にrequestを用意する。requestは、サーバにアクセスするためのHTTPレスポンスをそのまま表している。

  • 関数index_funcは戻り値として関数renderで呼び出した値を設定している。これは、第一引数にHTTPレスポンスを表すrequestを用意し、第二引数に対象となるテンプレート(この場合はtemplates/index.html)を用意し、第三引数に持ってくるデータを用意する。(この場合はまだデータを用意していないので空のままにしておく。データが空の場合は{}で表現する)


これでDjangoのサーバを立ち上げ、127.0.0.1:8000/にアクセスしてください。そうすれば、index.htmlがブラウザ上に表示されると思います。


おわりに

今回の記事では、Djangoでルーティング設定を行うための方法を解説しました。

次回の記事では、Djangoでログイン機能を実装するための方法について詳細に解説していきます。