Django 基礎 分かりにくい部分まとめ

投稿者: Auther | 3 年, 4 ヶ月 前 | 0 のコメント

Django 基礎固め

アプリ側:views.pyとurl.pyの関係

view.py

from django.urls import path
from .views import helloworldfunc
urlpatterns = [
    path('helloworldurl/', helloworldfunc)  ← URLと関数
]

url.py

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def helloworldfunc(request):         ← Views.pyで指定した関数の定義
    return HttpResponse('<h1>hello world</h1>') 

プロジェクト側:url.py

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('helloworldapp.urls')), ← helloworldアプリの呼び出し
]

アプリはプロジェクトにぶら下がっている

クラスでも同じことができる(class based view)

アプリ側:url.py

from django.urls import path
from .views import helloworldfunc
urlpatterns = [
    path('helloworldurl/', helloworldfunc), 
path('helloworldurl2/', HelloWorldClass.as_view()) ← URLとクラス as_view:はメソッド
]

views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.view.generic import TemplateView ← djangoのtemplateviewクラスの継承のため
# Create your views here.
def helloworldfunc(request):        
    return HttpResponse('<h1>hello world</h1>') 

class HelloWorldClass(TemplateView): ← Views.pyで指定した関数の定義
template_name = 'hello.html' ← ブラウザに表示させるhtmlを指定

BASE_DIR:manage.pyの場所【settingsのtemplate:dir】

{% for  %} : 繰り返し

{{object.data }}:  object data

CRUD作成例:blog

urls.py

from django.urls import path
from .views import BlogList, BlogDetail, BlogCreate, BlogDelete, BlogUpdate
urlpatterns = [
    path('list/', BlogList.as_view(), name='list'),
    path('detail/<int:pk>/', BlogDetail.as_view(), name='detail'),
    path('create/', BlogCreate.as_view(), name='create'),
    path('delete/<int:pk>', BlogDelete.as_view(), name='delete'),
    path('update/<int:pk>', BlogUpdate.as_view(), name='update'),
]

views.py

from django.shortcuts import render
from django.views.generic import ListView, DetailView, CreateView, DeleteView, UpdateView
from .models import BlogModel
from django.urls import reverse_lazy
# Create your views here.

class BlogList(ListView):
    template_name = 'list.html'
    model = BlogModel

class BlogDetail(DetailView):
    template_name = 'detail.html'
    model = BlogModel

class BlogCreate(CreateView):
    template_name = 'create.html'
    model = BlogModel
    fields = ('title', 'content', 'category')
    success_url = reverse_lazy('list')

class BlogDelete(DeleteView):
    template_name = 'delete.html'
    model = BlogModel
    success_url = reverse_lazy('list')

class BlogUpdate(UpdateView):
    template_name = 'update.html'
    model = BlogModel
    fields = ('title', 'content', 'category')
    success_url = reverse_lazy('list')

reverse_lazy(function baseではreverse)

views.py → urls.py → url で対象のviewを呼び出す。

通常は request → urls.py → views.py

formの作成するというボタンがクリックされると、views.pyのreverse_lazyで指定された文字列(今回は'list')とurls.pyの中で指定したname情報が照合される。

現在未評価

現在コメントはありません

新しいコメント

必須

記入が必要です(公開はされません)

オプション

最近の投稿

アーカイブ

2024
2023
2021
2020

タグ

多義語(1) 英語原論(15) 単語 上級(12) コラム(7) mezzanine(1) サブスリー(4) music(11) 海外移住(2) 文化(2) 政治(2) nujabes(3) ランニング(5) 発音(14) django(4) 文法(15) 文法問題(1) 教育論(3) 転職(2) 仕事(1) アニメ(1) cowboy bebap(26) TOEIC(1) 歴史(2) vuejs(7) 経済(1) lesencrypt(1) データサイエンス(1)

著者

Auther (120) admin (2)

フィード

RSS / Atom

Social Links

運営より

当ウェブサイト内のコンテンツ(文章、写真、イラスト、サイト構造など)に関する著作権等は 弊社、または制作者などに帰属しております。営利、非営利を問わず、当ウェブサイトのコンテンツの全て 、または一部を許可なく複製、転用、販売など二次利用することはご遠慮ください。

目覚めよ!英語力