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')
views.py → urls.py → url で対象のviewを呼び出す。
通常は request → urls.py → views.py
formの作成するというボタンがクリックされると、views.pyのreverse_lazyで指定された文字列(今回は'list')とurls.pyの中で指定したname情報が照合される。
現在コメントはありません