新しく作成したアプリ(music)のページで、作成したデータベースが反映されるように更新していきます。
現時点のurls.pyとview.py
*view.py は、 urls.pyにより導かれたrequestにどのようなレスポンスを返すか記述しているプログラムファイル。
構成としては、music のページに
・Albumの一覧ページ を作成
・一覧のうちの特定のアルバムをクリックするとアルバムの詳細が表示される。
とする。
では、詳細ページから作成。
1. プロジェクト内 " urls.py " の変更
コマンドライン
|
解説
|
import re from django.urls import path from . import views urlpatterns = [ # /music/ path(r'', views.index, name='index'), # /music/712/ path('<int:album_id>', views.detail, name='detail'), ] |
<- music/ 以降のディレクトリの指定がないrequestに対する処理 <- music/ 以降のディレクトリに、album IDの指定があるrequestに対する処理 <-任意の桁数の数字を引いてくる。 <- 上手くいかない。(Error message下記) <-修正版 |
html Error Message with deleted descriptioned shown above
*Raw Stringの解釈がうまくできていないのか?
(参考)
https://stackoverflow.com/questions/31056789/difference-between-and-in-urls-django
Q. What is the difference between the below two url patterns in django?
url(r'^$', views.indexView, name='index'),
url(r'', include('registration.urls'))
Answer)
Lets say my regex was
If my regex was
Using both
Using
When you use
So, if your urlpattern was like this:
https://stackoverflow.com/questions/31056789/difference-between-and-in-urls-django
Q. What is the difference between the below two url patterns in django?
url(r'^$', views.indexView, name='index'),
url(r'', include('registration.urls'))
Answer)
Lets say my regex was
^a
, then the regex will look for a
in the start of the string:'a' # Matches 'a' in 'a'
'abc' # Matches 'a' in 'abc'
'def' # Not match because 'a' was not at the beginning
$
(Dollar sign):$
matches the end of the string.If my regex was
b$
, then it will match b
at the end of the string:'b' # Matches 'b' in 'b'
'ab' # Matches 'b' in 'ab'
'abc' # Does not match
Using r'^$'
:Using both
^
and $
together as ^$
will match an empty line/string.url(r'^$', views.indexView, name='index')
When Django encounters an empty string, it will go to the index
page.Using
r''
: When you use
r''
, Django will look for an empty string anywhere in the URL, which is true for every URL.So, if your urlpattern was like this:
url(r'', views.indexView, name='index')
All your urls will go to index
page.
2. プロジェクト内 " view.py " の変更
view.pyを変更します。
" view.py " の内容を以下の記述に変更します。
from django.http import HttpResponse
def index(request): #urlsで指定したnameでfunction定義
return HttpResponse("<h1> This is the Music App Homepage!</h1>")
def detail(request, album_id):
return HttpResponse("<h2> Details for Album id: " + str(album_id) + "</h2>")
def index(request): #urlsで指定したnameでfunction定義
return HttpResponse("<h1> This is the Music App Homepage!</h1>")
def detail(request, album_id):
return HttpResponse("<h2> Details for Album id: " + str(album_id) + "</h2>")
すると、以下の詳細ページがリンクつけされます。
参考)
Django Tutorial for Beginners - 12 - Writing Another View
https://youtu.be/mWofrhTwGWQ
0 件のコメント:
コメントを投稿