Маршрутизация для класса 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.

Вернуться на верх