首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Django的CreateView中测试get_success_url

在Django的CreateView中测试get_success_url,可以通过编写单元测试来验证其功能。下面是一个示例的测试代码:

代码语言:txt
复制
from django.test import TestCase
from django.urls import reverse
from django.contrib.auth.models import User
from django.views.generic import CreateView

from myapp.models import MyModel

class CreateViewTest(TestCase):
    def setUp(self):
        self.user = User.objects.create_user(username='testuser', password='testpassword')
        self.client.login(username='testuser', password='testpassword')
        self.url = reverse('create_view_url')
        self.data = {
            'field1': 'value1',
            'field2': 'value2',
            # 添加其他字段的值
        }

    def test_get_success_url(self):
        response = self.client.post(self.url, data=self.data)
        self.assertEqual(response.status_code, 302)  # 检查是否重定向到成功页面
        self.assertEqual(response.url, reverse('success_url'))  # 检查重定向的URL是否正确

    def test_create_object(self):
        response = self.client.post(self.url, data=self.data)
        self.assertEqual(response.status_code, 302)  # 检查是否重定向到成功页面
        self.assertEqual(MyModel.objects.count(), 1)  # 检查是否成功创建了对象
        obj = MyModel.objects.first()
        self.assertEqual(obj.field1, 'value1')  # 检查字段值是否正确
        self.assertEqual(obj.field2, 'value2')
        # 检查其他字段的值

    def test_authenticated_user_required(self):
        self.client.logout()
        response = self.client.post(self.url, data=self.data)
        self.assertEqual(response.status_code, 302)  # 检查是否重定向到登录页面

    def test_template_used(self):
        response = self.client.get(self.url)
        self.assertTemplateUsed(response, 'create_view_template.html')  # 检查是否使用了正确的模板

    def test_form_valid(self):
        response = self.client.post(self.url, data=self.data)
        self.assertEqual(response.status_code, 302)  # 检查是否重定向到成功页面
        # 可以根据具体的业务逻辑编写其他的form_valid测试

在上述代码中,我们首先创建了一个测试用户并登录,然后定义了测试用例。在test_get_success_url中,我们使用self.client.post方法模拟了一个POST请求,检查返回的状态码是否为302(重定向),并且检查重定向的URL是否正确。

test_create_object中,我们检查是否成功创建了一个对象,并且验证对象的字段值是否正确。

test_authenticated_user_required中,我们测试了未登录用户访问该视图时是否会被重定向到登录页面。

test_template_used中,我们检查视图是否使用了正确的模板。

最后,在test_form_valid中,我们可以根据具体的业务逻辑编写其他的form_valid测试。

这些测试用例可以通过运行python manage.py test命令来执行。如果所有的测试用例都通过了,就说明在Django的CreateView中的get_success_url方法被正确测试。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在 Django 中测试模型表单

clean user_profile = self.instance.user_profile File "/usr/local/lib/python2.7/dist-packages/django...在测试用例中,没有为 FilterForm 设置模型实例。...为了解决这个问题,可以在测试用例中添加以下代码:filterform = FilterForm()#print filterform.is_valid()form_data = {'keyword':...常见的解决方案涉及遍历并比较两个列表中的每个元素,但我们希望探索更具数学性、高效的方法。解决方案集合交集法:一种常用方法是使用集合的交集运算。我们可以将每个列表的坐标视为一个集合,计算它们的交集。...线性方程法:另一种方法是将列表中的元素视为线段,使用线性方程求解线段相交点。我们可以构造一个线性方程组,其中每个方程代表列表中的一条线段。求解该方程组,可以得到两个线段的交点。

13310
  • 基于python+django的二手商品交易平台-二手商品供需系统

    项目简介该项目是基于python的web类库django开发的一套web网站,二手商品交易平台,给师弟开发的课程作业。大家在学习过程中,遇到问题可以github咨询作者。...预览展示http://mask.gitapp.cn源码地址https://github.com/geeeeeeeek/mask开发步骤:启动项目django-admin startproject mask...同样是观看代码:class CommitView(generic.CreateView): model = Product form_class = CommitForm template_name...app/commit.html', {'form': CommitForm()}) return super().post(request, *args, **kwargs) def get_success_url...") return reverse('app:commit')它是继承自CreateView,因为是创建操作嘛,在post中,我们通过ratelimit来限制提交次数,防止恶意提交。

    54800

    django 1.8 官方文档翻译:6-5-1 Django中的测试

    Django中的测试 自动化测试对于现代web开发者来说,是非常实用的除错工具。...使用Django的测试执行框架和各种各样的工具,你可以模拟请求,插入测试数据,检查你的应用的输出,以及大体上检查你的代码是否做了它应该做的事情。 最好的一点是,它非常简单。...在Django中编写测试的最佳方法是,使用构建于Python标准库的unittest模块。这在编写和运行测试 文档中会详细介绍。...你也可以使用任何其它 Python 的测试框架;Django为整合它们提供了API和工具。这在高级测试话题的使用不同的测试框架 一节中描述。...Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。

    33420

    【测试开发技能】Django中验证码的实现

    本篇不会去教大家采取哪种方式去识别验证码,而是给大家介绍一下在django中怎么实现验证码这个功能的。...背景 在实际应用中,很多业务场景如 登录,注册,发送短信验证码 等需要大家输入验证码,其主要目的是强制人机交互来抵御自动化攻击。本篇以注册功能为例,讲解django中是如何实现验证码功能的。...步骤 安装第三方 django-simple-captcha 包 pip isntall django-simple-captcha==0.4.6 在settings.py 文件中的 INSTALLED_APPS...在views.py 文件中的实现 注意在get方法中,我们要将上一步的form表单实例化,传递给前端html 文件 ,看具体的代码实现: ? 在前端html页面中验证码块做如下修改 ?...好了,django中如何实现验证码功能就介绍到这里,有兴趣的同学可以实践下!代码是截图,如需要复制,可联系微信号cctester 一键关注微信公众号,获取更多资讯

    1.5K10

    利用Django通用类视图(class

    框架的好处就是,它已经为用户处理了绝大多数的场景中的重复代码,提供了封装好的接口,使得我们在开发中十分方便。...ListView可以通过你给出的model以及想要展示的model中的field,在对应的数据库中查询出对应的对象存放在List对象中,并传递给template渲染。...如果你在Django设置settings.py中的TEMPLATES下配置了'APP_DIRS': True 的话,Django默认会去渲染/project/app_name/templates/app_name...在web开发中约定俗成的规则是,对于查询类的请求用get,对于修改类的请求用post。Django在设计的时候也遵循了这个原则,所以以下的每个view中,都具有支持get和post的函数。...这样,只需要在view当中加入这个form_class就可以实现模板中渲染的form表单具有自定义的属性了: class SSHAuthCreateView(CreateView): template_name

    1.5K20

    如何在 Python 测试脚本中访问需要登录的 GAE 服务

    而我正在用 Python 编写一个自动化脚本来测试这个服务。这个脚本只是执行一个 HTTP POST,然后检查返回的响应。对我来说困难的部分是如何将测试脚本验证为管理员用户。...我创建了一个管理员帐户用于测试目的。但我不确定如何在测试脚本中使用该帐户。有没有办法让我的测试脚本使用 oath2 或其他方法将自己验证为测试管理员帐户?...2、解决方案可以使用 oauth2 来验证测试脚本作为测试管理员帐户。以下是有关如何执行此操作的步骤:使用您的测试管理员帐户登录 Google Cloud Console。...在您的测试脚本中,使用 google-auth-oauthlib 库来验证您的应用程序。...get_creds() response = make_request('https://example.com/', creds) print(f'Response: {response}')运行您的测试脚本

    11710

    框架篇-Django博客应用-访问文章

    1.使用 django 视图类 DetailView; 2.get_object 为 DetailView 类中的方法; 3.Blog.objects.get 是 django 中封装的对数据库的操作,...编辑文章 在文章发布过程中/之后,难免需要继续/重新编辑 在 /index/forms.py 文件中添加: ?...在原来的基础上没有大的改动,就是 save 函数中添加了一个参数 blog views.py 在 index/views.py 文件中添加: 添加 BlogEditView 类,继承 FormView...表单还是使用的是发布文章表单 BlogPublishForm 2. get_initial 函数为 FormView 类自带函数,用来初始 form 表单的值 3. get_success_url 函数也为...FormView 类自带函数,用来返回当表单成功保存后的跳转页面链接 4. form.save 函数添加了一个参数 blog urls.py 在 index/urls.py 文件中: 添加编辑文章链接

    66140

    django中ModelForm多表单组合的解决方案

    所以,基本表单的功能看BaseForm已经足够了。 2、从模型创建表单 django对于MVC中的C与M间的映射是非常体贴的,集中体现中Model模型中(比如模型的权限与用户认证)。...中告诉django需要在表单中创建哪些字段。...3、通用视图 django.views.generic.ListView和django.views.generic.edit下的CreateView, UpdateView, DeleteView都是通用视图...比如CreateView就会由django自动的把页面上POST出的form数据解析到model生成的表单(或者form_calss指定的ModelForm类型表单),同时调用表单的save方法将数据添加到模型对应的数据库表中...我们看看CreateView的继承关系: 简单介绍下CreateView通用视图中每个父类的作用。

    3.4K20

    python-Django-URL 路由(二)

    Django URL路由的示例 下面是一个简单的Django应用程序的示例,它使用URL路由来处理客户端请求。...在这个示例中,我们将这些视图函数定义在名为views.py的文件中:: from django.shortcuts import render, get_object_or_404, redirect...from django.views.generic.edit import CreateView, UpdateView from django.contrib.auth.decorators import...视图函数获取文章的slug,并使用get_object_or_404函数从数据库中获取文章对象。然后,视图函数将文章对象传递给包含文章详细信息的HTML模板。...这个视图函数使用Django的通用视图类CreateView来处理创建新文章的表单,然后重定向到post_list视图函数,这个视图函数将渲染一个包含所有文章的列表的HTML模板。

    82720

    如何在模拟器中测试Windows Phone 8的NFC应用

    众所周知Window Phone 8 SDK的模拟器不支持NFC功能的测试。...如果您开发了一款基于NFC功能的应用,那么意味着您测试时需要两台支持NFC的Windows Phone设备在手,这样的配置恐怕会让很多独立开发者望而却步。...可喜的是开源项目Proximity Tapper解决了在模拟器中测试NFC功能的需求,可以实现Windows Phone 8 emulator模拟NFC操作,还可实现Windows Phone与Windows...由于Visual Studio不支持同时运行两个相同的模拟器,你需要选择不同的分辨率的模拟器来解决此问题。模拟器启动后在Proximity Tapper的Devices中会发现此两个设备。...这样就可在两个模拟器之间测试NFC的功能。 下图是笔者测试通过NFC功能发布应用的Uri关联消息。

    2.3K10

    django 1.8 官方文档翻译: 3-4-5 内建基于类的视图的API

    基础视图 View TemplateView RedirectView 通用的显示视图 DetailView ListView 通用的编辑视图 FormView CreateView UpdateView...基于类的视图在URL 模式中的部署使用as_view() 类方法: urlpatterns = [ url(r'^view/$', MyView.as_view(size=42)), ] 视图参数的线程安全性...参数必须对应于在类中已经存在的属性(hasattr 检查可以返回True)。 基础视图 VS. 通用视图 基于类的基础视图可以认为是父视图,它们可以直接使用或者继承它们。...它们不能满足项目中所有的需求,在这种情况下有Mixin 可以扩展基础视图的功能。 Django 的通用视图建立在基础视图之上,用于作为经常用到的功能的快捷方式,例如显示对象的详细信息。...Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。

    85620
    领券