Маршрутизация для класса FormView
У меня есть django_test проект и defapp приложение в нем.
Я хочу получить доступ к форме.html, которую создает MyView,
Я все еще запутался в маршрутизации.
Я могу получить доступ к localhost/defapp/ и показать Hello, World
Однако как я могу получить доступ к классу MyView и показать form.html?
в django_test/urls.py
from django.contrib import admin
from django.urls import path
from django.conf.urls import include,url
urlpatterns = [
path('defapp/', include('defapp.urls')),
url(r'^s3direct/', include('s3direct.urls')),
path('admin/', admin.site.urls),
]
в defapp/views.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index')
]
в defapp/views.py
from django.shortcuts import render
# Create your views here.
from django.views.generic import FormView
from .forms import S3DirectUploadForm
def index(request):
return HttpResponse("Hello, world.")
class MyView(FormView):
template_name = 'form.html'
form_class = S3DirectUploadForm
в defapp/template/form.html
<html>
<head>
<meta charset="utf-8">
<title>s3direct</title>
{{ form.media }}
</head>
<body>
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
</form>
</body>
</html>
Если вы хотите узнать, как подключить представление на основе классов в urlconf, ознакомьтесь с этими документами по представлениям на основе классов.
Наиболее прямой способ использования общих представлений - это создание их непосредственно в URLconf. Если вы изменяете только несколько атрибутов в представлении на основе класса, вы можете передать их в сам вызов метода as_view():
from django.urls import path
from django.views.generic import TemplateView
urlpatterns = [
path('about/', TemplateView.as_view(template_name="about.html")),
]
Дополнительно может оказаться полезной документация по as_view.