- Understanding Django Views
- avoid add business logic into the view, if embedding business logic directly into the view will make it nonreusable, not testability and coupling.
- Django’s Generic Views
- from django.views.generic import ListView, DetailView, TemplateView
- from django.views.generic.dates import ArchiveIndexView, YearArchiveView, MonthArchiveView, DayArchiveView, TodayArchiveView, DateDetailView
- from django.views.generic.edit import FormView, CreateView, DeleteView, UpdateView, DeleteView
- use help(ListView) to check detail property and method and so on

- Mixins
- refers to a class that provides additional functionality to other classes through inheritance.


- Django Mixin
- ContextMixin: Adds extra context data to the view
- TemplateResponseMixin: Renders template and returns an HTTP response
- FormMixin: Used to handle form submission and validation
- CreateModelMixin: Used to save a new object to database
- UpdateModelMixin: Used to upate an existing object in database
- DeleteModelMixin: Used to delete an object
- URL Configuration
- ulrpatterns = [ re_path(r’^tasks/(?P<by_date>[0-9]{4}-[0-9]{2}-[0-9]{2})/$’, views.query_by_date, name=”task_list”),]
^: indicating the begin
$: indicateing the last
[0-9]{4}: 4 characters and each character is 0~9.
(?P<by_date>…….), will pass the value as by_date parameter to the view.
r preceding the string is a flag, informing Python that this is a raw string
- url path built-in convert:
- str
- int
- slug
- uuid
- path
- url path custom convert


- URL Namespace and Name tasks:task-detail
to use namespace for urls, use app_name in the urls.py


- HttpRequest object
- request.method
- request.user
- request.path
- request.GET
- request.POST
- request.FIELS
- request.headers

- HttpResponse object
- the object accept a parameter that contains the content destined for client.
