python返回none对象_Django Class视图未返回HttpResponse对象。它返回None - python

urls.py

from housepost.views import ListingPost

...

url(r'^house_post/$', ListingPost.as_view(), name='post_house'),

...

views.py

from django.http import HttpResponse

from django.contrib import messages

from django.views.generic import View

from django.contrib.auth.decorators import login_required

from django.utils.decorators import method_decorator

class ListingPost(View):

def get(self, request, *args, **kwargs):

messages.error(request, 'asdf', extra_tags = 'error')

return HttpResponse('Hi')

@method_decorator(login_required)

def dispatch(self, *args, **kwargs):

super(ListingPost, self).dispatch(*args, **kwargs)

我在get请求上返回HttpResponse,但我不断收到错误消息:

错误信息

视图housepost.views.ListingPost没有返回HttpResponse对象。它返回None。

我要去哪里错了?

python大神给出的解决方案

dispatch返回HttpResponse,但是覆盖它时不返回任何内容。这是调用get或post并代表它们返回响应的方法。因此,以下应该工作:

def dispatch(self, *args, **kwargs):

return super(ListingPost, self).dispatch(*args, **kwargs)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以的,Python Django 提供了完整的认证系统,可以方便地实现用户登录功能。下面是一个简单的登录界面的实现: 1. 创建 Django 项目和应用程序 首先,需要创建一个 Django 项目和应用程序,可以通过以下命令完成: ``` django-admin startproject myproject cd myproject python manage.py startapp myapp ``` 将 `myapp` 添加到 `myproject/settings.py` 中的 `INSTALLED_APPS` 列表。 2. 创建用户认证视图和模板 在 `myapp/views.py` 中定义一个名为 `login_view` 的视图,该视图显示登录表单并提供用户身份验证。 ``` from django.contrib.auth import authenticate, login from django.http import HttpResponse from django.shortcuts import render def login_view(request): if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return HttpResponse('Successfully logged in') else: return HttpResponse('Invalid login credentials') else: return render(request, 'login.html') ``` 在 `myapp/templates` 目录下创建一个名为 `login.html` 的模板文件,用于显示登录表单。 ``` {% extends 'base.html' %} {% block content %} <div class="container"> <div class="row"> <div class="col-md-6 offset-md-3"> <form method="post"> {% csrf_token %} <div class="form-group"> <label for="exampleInputEmail1">Email address</label> <input type="email" class="form-control" name="username" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email"> <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small> </div> <div class="form-group"> <label for="exampleInputPassword1">Password</label> <input type="password" class="form-control" name="password" id="exampleInputPassword1" placeholder="Password"> </div> <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> </div> {% endblock %} ``` 3. 添加 URL 规则 在 `myapp/urls.py` 中定义 URL 规则,以便 Django 可以找到 `login_view` 视图。 ``` from django.urls import path from . import views urlpatterns = [ path('login/', views.login_view, name='login'), ] ``` 在 `myproject/urls.py` 中添加嵌套 URL 规则,以便访问 `myapp` 应用程序的 URL。 ``` from django.urls import include, path urlpatterns = [ path('', include('myapp.urls')), ] ``` 4. 运行应用程序 最后,启动 Django 开发服务器,测试登录视图是否正常工作。 ``` python manage.py runserver ``` 在浏览器中访问 `http://localhost:8000/login/`,应该看到一个带有登录表单的页面。填写表单并点击“登录”按钮,如果输入的用户名和密码正确,则应该收到“成功登录”的消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值