LoginSignup
1
2

More than 5 years have passed since last update.

Django 覚書 〜その1〜

Last updated at Posted at 2019-01-15

Django覚書に関して

色々覚えながら開発しているので、使い回す技とか仕様とかはここでメモしたい思う。

環境

開発機のOS: macOS Mojave 10.14.2
Python: python3(anaconda0
Django: 2.1.5

フォルダ構成

Application(ほかのチュートリアルではmysiteになってるやつ)
|-Conf(setting.pyやwsgi.pyがあるやつ、チュートリアルではmysiteになってるやつ別の名前にしないとややこしい)
|  |- urls.py (ここで各アプリケーションのurls.pyをインクルードしてる)
|  |- ・・・・
|
|-app01(アプリケーション本体,startappコマンドで作ったやつ)
|      |- __init__.py
|      |- views.py (ビュー)
|      |- urls.py (App01自身のurl.py)
|      |- apps.py 
|      |- forms.py (フォームモデル)
|      |- models.py (モデル)
|
Conf/urls.py
from django.contrib import admin
from django.urls import path, include
from . import views

urlpatterns = [
  path('admin/', admin.site.urls),
  path('app01/', include('app01.urls'), #app01のurls.pyを読み込むのだ
]
app01/urls.py
from django.urls import path
from . import views

app_name = 'app01'
urlpatterns = [
  path('index_view/<int:pk>/', views.index_view, name='index_view'),
]

/<int:pk>/はのちに渡す変数がここに入るよ、ということを示したいる。

ボタンやリンクでGETパラメーターを送ってview.pyで受け取る

どのページでも使うと言っていいこの技術。ここに書いて覚えていきたい。

前提

app01のGETパラメーターでapp01/views.pyに定義したhensuに値を渡したい。
テンプレート内から変数などをviews.pyに渡すときに一番簡単そうな方法として、urlに組み込んで渡す方法がある。
「app01/(渡したい数字などがここに入る)/」という風にurlが生成される。
[例]
pkという変数に1を入れると、「app01/1/」のようになる。

[記事修正]
GETパラメーターではなく「app01/ 渡したい数字など/」のようにする方法でした。Getパラメーターは別の方法です。
app01/urls.pyにも修正も修正しました。

views.py
class App01IndexView(View):
   def get(self, request, pk):
     hensu = pk

index_view = App01IndexView.as_view()

pkはapp01.pyでurlsで書いた<int:pk>の部分が反映されていると思われる。

実行

1.まずテンプレート内でのボタンとリンクはこんな感じになる。
もちろん、どちらか一つでいい。
GETパラメーターurlに渡す値をjorkerとする

テンプレート側
<input type="button" onclick="location.href='{% url "app:appview" jorker %}'" value="ボタンだよ">
<a href="{% url "app01:appview" jorker %}">リンクだよ</a>

{% %}で囲ってurlの後に""内で
*app01/urls.pyで定義したapp_name
*app01/urls.pyで定義したpath関数内の名前付き引数name=に指定した名前
の二つを:でつなげる。
そしてその後に渡したい値を半角スペースの後に入力。すうじでもいいものと思われる。
すすと、jorkerはApp01IndexView(View)内のgetメソッドの第一引数に引き渡されるのでhensuに入力されることになる。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2