首页 > 解决方案 > 尝试转换为班级时出现问题

问题描述

这是我的原始代码

from django.shortcuts import render
def login(request):
    if(request.method == "POST"):
        return render(request, 'login1.html')
    else:
        return render(request, 'login.html')

将上面的代码转换为下面的类。

class login(View):
    def loginForm(self, request):
        return render(request, 'login.html')
    def authenticate(self, request):
        return HttpResponse("Inside Post")

新建 Url.py 文件

from django.urls import path
from .import views

app_name = 'authapp'

urlpatterns = [
    path('', views.login.loginForm(), name='loginForm'),
    path('', views.login.authenticate(), name='authenticate')
]

我有一个错误

loginForm() 缺少 2 个必需的位置参数:self 和 request。

你能建议点什么吗?我实际上是在尝试将代码转换为类。没有课一切都很好。

标签: django

解决方案


通常的方法是在视图类上定义一个get和一个方法。post当使用相关的请求方法时,每个都会被调用。

class LoginView(View):

    def get(self, request, *args, **kwargs):
        return render(request, 'login.html')

    def post(self, request, *args, **kwargs):
        return HttpResponse("Inside Post")

urlpatterns = [
    path('', LoginView.as_view(), name='login'),
]

推荐阅读