開発者ドキュメント

DjangoWeb開発用のビューを作成する方法

序章

Django Development シリーズをフォローしていれば、管理者権限を持つユーザーがコメント投稿を介して追加できるDjangoアプリケーションを正常に作成できています。 Djangoの管理UIダッシュボード。 また、MySQLとDjangoのオブジェクトリレーショナルマッピングソリューションモデルを活用して、データの永続性を設定しました。

このチュートリアルでは、WebアプリケーションがWeb要求を適切に処理し、必要なWeb応答を返すことができるようにするDjango viewsを作成します。 Django docs で定義されているように、Web応答は、WebページのHTMLコンテンツ、リダイレクト、またはHTTPエラー(例: 404). ビュー関数のコードは、Pythonパス上にある限り、技術的にはプロジェクトのどこにでも存在できます。 ただし、これらのビュー関数が存在するファイルに名前を付けて配置するための一般的な規則がいくつかあり、これらの慣例に従います。

このチュートリアルの手順を完了すると、Djangoブログサイトが最近の投稿を your-IP-or-domain/post URL。

前提条件

このチュートリアルはDjango開発シリーズの一部であり、そのシリーズの続きです。

このシリーズに従わなかった場合は、次のことを前提としています。

このガイドは主にDjangoビューを扱っているため、設定が多少異なる場合でも従うことができる場合があります。

ステップ1—ビュー関数を作成する

ターミナル内で、最初に関連するディレクトリに移動し、Python仮想環境をアクティブ化する必要があります。 このシリーズを続けている場合は、以下のコマンドを入力できます。 アプリを開発するときは、常にPythonプログラミング環境を使用して、コードが含まれ、適切なセットアップで作業していることを確認することが重要です。

  1. cd ~/my_blog_app
  2. . env/bin/activate

仮想環境がアクティブ化されたので、に移動してみましょう。 blogsite Pythonファイルを開き、最初のビュー関数を作成するディレクトリ。

  1. cd ~/my_blog_app/blog/blogsite

を開きます views.py nanoまたは選択したテキストエディタを使用して編集するためのファイル。

  1. nano views.py

ファイルを開くと、次のようなコードが入力されているはずです。

/my_blog_app/blog/blogsite/views.py
from django.shortcuts import render

# Create your views here.

をインポートするimportステートメントを保持します render() からの機能 django.shortcuts 図書館。 render()関数を使用すると、テンプレートとコンテキストの両方を組み合わせて、適切なものを返すことができます。 HttpResponse 物体。 これを覚えておいてください。なぜなら、私たちが書くすべてのビューで、インスタンス化、入力、および戻りを行う責任があるからです。 HttpResponse.

次に、ユーザーをインデックスページに歓迎する最初のビューを追加します。 インポートします HttpResponse() Djangoからの機能 http 図書館。 その関数を使用して、Webページが要求されたときに表示されるテキストを渡します。

〜/ my_blog_app / blog / blogsite / views.py
from django.shortcuts import render
from django.http import HttpResponse


def index(request):
    return HttpResponse('Hello, welcome to the index page.')

続いて、チュートリアルの後半で作成する個々の投稿を表示する関数をもう1つ追加します。

〜/ my_blog_app / blog / blogsite / views.py
...
def individual_post(request):
    return HttpResponse('Hi, this is where an individual post will be.')

私たちの決勝 views.py ファイルは次のようになります。

〜/ my_blog_app / blog / blogsite / views.py
from django.http import HttpResponse
from django.shortcuts import render


def index(request):
    return HttpResponse('Hello, welcome to the index page.')

def individual_post(request):
    return HttpResponse('Hi, this is where an individual post will be.')

ファイルの編集が終了したら、必ず保存して終了してください。 nanoでは、を押すことができます CTRLX、 それから Y、 それから ENTER.

現在、これらの関数が指している指定されたURLがないため、これを追加する必要があります。 urlpatterns URL構成ファイル内のブロック。 ビューを追加したら、この構成ファイルを介してURLをビューにマッピングし、作成したページを表示できるようにします。

ステップ2—URLをビューにマップする

Djangoを使用すると、アプリで使用する独自のURLを設計できます。 これは、一般に[X73X]URLconfまたは「URL構成」ファイルと呼ばれるファイルを使用して純粋なPythonで実行されます。

Webページを表示するには、Djangoが最初にルートを決定する必要があります URLconf 使用するモジュール、次に検索に進みます urlpatterns、すべてのURLパターンを含むリストデータ構造。 次に、Djangoは、一致する最初のURLパターンが見つかるまで、各URLパターンを調べます。 一致するものが見つかると、Djangoは関連するビューを見つけ、そのビュー関数はURLパターンと HttpRequest 物体。 このプロセスのいずれかの時点で障害が発生した場合は、代わりにエラー処理ビューが表示されます。

このセクションでは、2つの異なるものを使用します urls.py アプリの2つの異なるディレクトリにあるファイル。

にいる間 ~/my_blog_app/blog/blogsite ディレクトリ、を開きます urls.py 編集用のファイル(URLconfファイルとも呼ばれます)。 ここではnanoを使用してファイルを編集します。

  1. nano urls.py

以下のファイルと同じになるようにファイルを変更します。 urlpatterns リスト。

〜/ my_blog_app / blog / blogsite / urls.py
from django.urls import path
from . import views


urlpatterns = [
    path('', views.index, name='index'),
    path('post/', views.individual_post, name='individual_post')
]

上記の行の追加が終了したら、ファイルを保存して閉じます。

更新したら blogsite ディレクトリのURLconfファイル、これをに含めます blog ディレクトリのURLconfを指定しないと、認識されません。 として設定されているため、これを行う必要があります ROOT_URLCONF 設定ファイルにあります。 これは、Djangoが blog ディレクトリのURLconf urlpatterns.

私たちを含めるには blogsite 私たちの内のURLconf blog URLconf、そのディレクトリに移動する必要があります。

  1. cd ~/my_blog_app/blog/blog

そこに着いたら、nanoまたは任意の別のテキストエディタでURLconfファイルを開くことができます。

  1. nano urls.py

このファイル内に、次の行を追加して、 /blogsite/urls.py 作業したばかりのファイル。2行目に示されています。

〜/ my_blog_app / blog / blog / urls.py
from django.contrib import admin
from django.urls import include, path


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

ファイルを保存して閉じます。

次に、作成したURLに移動し、ビューに追加したテキストが表示されることを確認するために、Webブラウザーを開きます。 にアクセスするには、親ディレクトリに移動する必要があります manage.py Djangoアプリを提供するファイル。

  1. cd ..

次のコマンドを発行します。 交換できます 0.0.0.0 以下のIPアドレスを使用してください。

  1. python manage.py runserver 0.0.0.0:8000

Webブラウザー内で、IPアドレス(ポート8000)に移動します。

your-server-ip:8000

次のようなWebページが表示されます。

次に、次のURLに移動します。

your-server-ip:8000/post/

ここから、次のWebページが表示されます。

これで、2つが urls.py ファイルは機能し、データは私たちが期待するものを正確に示しています。 これが機能しているので、実際のデータをブログに追加しましょう。

ステップ3—ブログ投稿を作成する

URLパターンとビューがどのように機能するかの基本を理解したので、ブログ投稿を追加して、Pythonファイルにハードコーディングしたテキストの代わりにそれをWebページに表示させましょう。

以前に設定したの管理ページから投稿を作成します。 サーバーがDjangoアプリを提供している状態で、Webブラウザーを使用して管理者に移動します Blogsite ページ:

your-server-ip:8000/admin/blogsite/

インターフェイスで、をクリックします + Add にあるリンク Posts ブログ投稿の例をデータベースに入力し始める行。

リンクをクリックすると、次のような入力フォームが表示されます。

投稿を追加するときはいつでも、このページに移動して追加します。 または、で投稿を編集することもできます Change リンク。

フォームでは、次のフィールドを編集できます。

分野 コンテンツ
Title たとえば、ここに希望のブログ投稿タイトルを追加します My First Blog Post.
Slug これは、人間が読めるキーワードで有効なWebアドレス要素を識別するURLの一部を指します。 これは通常、ページのタイトルから派生しているため、この場合は次のように使用できます。 my-first-blog-post.
Content これはあなたのブログ投稿の本文です。 追加するだけです Hello, World! たとえば目的ですが、これはあなたが冗長になることができる場所です。
Author このフィールドに、関連する名前またはユーザー名を追加します。 我々は使用するだろう Sammy.

テスト目的に適していると思われる場合は、ブログ投稿フォームに記入してください。

サンプルデータをページに追加したら、[ SAVE ボタン。 次の確認ページが表示されます。

おめでとう! 最初のブログ投稿を作成しました。

次に、管理インターフェースに入力したデータを含む行がMySQLデータベースに追加されていることを確認しましょう。

ステップ4—データベースデータを表示する

この時点で、MySQLに移行する必要があるため、次のように入力して、ターミナル経由で現在のサーバープロセスを停止します。 CTRL + C、次にMySQLインタープリターを開きます。 Djangoアプリのデータベースのユーザーは djangouser、ただし、プロジェクトには必ず適切なユーザーを使用してください。

  1. mysql -u djangouser

MySQLプロンプトが表示されたら、に移動します blog_data データベース(またはプロジェクトに適したデータベース):

  1. use blog_data;

次に、の内容を表示します blogsite_post テーブル。

  1. select * from blogsite_post;

次のような出力が表示され、管理者ユーザーインターフェイスに追加した情報が表示されます。

Output
+----+--------------------+--------------------+---------------+----------------------------+--------+ | id | title | slug | content | created_on | author | +----+--------------------+--------------------+---------------+----------------------------+--------+ | 1 | My First Blog Post | my-first-blog-post | Hello, World! | 2020-05-14 00:30:03.186564 | Sammy | +----+--------------------+--------------------+---------------+----------------------------+--------+ 1 row in set (0.00 sec)

出力に示されているように、追加した投稿のデータを含む行があります。 このデータを投稿の表示機能に参照してみましょう。 使用する CTRL + D MySQLインタプリタを終了します。

の場所に移動します views.py あなたの内部のファイル blogsite アプリ。

  1. cd ~/my_blog_app/blog/blogsite

次に、ファイルを開いて、新しいデータを含めることができるようにします。

  1. nano views.py

以下のファイルと同じになるようにファイルを編集します。

〜/ my_blog_app / blog / blogsite
from django.shortcuts import render
from django.http import HttpResponse
from .models import Post


def index(request):
    return HttpResponse('Hello, welcome to the index page.')

def individual_post(request):
    recent_post = Post.objects.get(id__exact=1)
    return HttpResponse(recent_post.title + ': ' + recent_post.content)

上記のコードでは、追加の import の声明 Post. また、引用符で囲まれた文字列を HttpResponse ブログ投稿のデータに置き換えました。 特定のオブジェクトのデータを参照するために、表示したいオブジェクトに関連付けられたブログ投稿IDを使用し、そのIDをという変数に格納しています。 recent_post. 次に、フィールドにピリオドセパレータを追加することで、そのオブジェクトの特定のフィールドを取得できます。

ファイルを保存して閉じたら、次の場所に移動します。 manage.py Djangoアプリを実行するためのファイル。

  1. cd ~/my_blog_app/blog
  2. python manage.py runserver 0.0.0.0:8000

Webブラウザーから、次のアドレスに移動します。

your-server-ip:8000/post/

ここでは、行った変更を確認します。 ページはこれに似ており、投稿に追加したテキストが表示されます。

ページの検査が終了したら、を押します CTRL + C ターミナルでプロセスの実行を停止します。

プログラミング環境を非アクティブ化するには、次のように入力します。 deactivate コマンドを実行してからサーバーを終了します。

結論

このチュートリアルでは、ビューを作成し、URLパターンをマップし、ブログ投稿データベースからWebページにテキストを表示しました。

次のチュートリアルでは、HTMLを使用してDjangoテンプレートを作成することにより、これを実際に見た目に美しくする方法について説明します。 これまでのところ、このシリーズではDjangoモデルとDjangoビューについて説明してきました。 テンプレートは、Djangoアプリケーションの基盤となると最後の重要な部分です。

モバイルバージョンを終了