首页
学习
活动
专区
工具
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':...常见解决方案涉及遍历并比较两个列表每个元素,但我们希望探索更具数学性、高效方法。解决方案集合交集法:一种常用方法是使用集合交集运算。我们可以将每个列表坐标视为一个集合,计算它们交集。...线性方程法:另一种方法是将列表元素视为线段,使用线性方程求解线段相交点。我们可以构造一个线性方程组,其中每个方程代表列表一条线段。求解该方程组,可以得到两个线段交点。

10710

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

项目简介该项目是基于pythonweb类库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来限制提交次数,防止恶意提交。

44600

何在keras添加自己优化器(adam等)

2、找到keras在tensorflow下根目录 需要特别注意是找到keras在tensorflow下根目录而不是找到keras根目录。...一般来说,完成tensorflow以及keras配置后即可在tensorflow目录下python目录中找到keras目录,以GPU为例keras在tensorflow下根目录为C:\ProgramData...找到optimizers.pyadam等优化器类并在后面添加自己优化器类 以本文来说,我在第718行添加如下代码 @tf_export('keras.optimizers.adamsss') class...# 传入优化器名称: 默认参数将被采用 model.compile(loss=’mean_squared_error’, optimizer=’sgd’) 以上这篇如何在keras添加自己优化器...(adam等)就是小编分享给大家全部内容了,希望能给大家一个参考。

44.9K30

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

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

31720

Django单元测试Fixtures使用方法

在使用单元测试时,有时候需要测试数据库中有数据,这时我们可以使用DjangoFixtures来生成测试数据。...在对Django项目做单元测试时,我们需要一些初始数据来作为检测结果依据,那么对于我们已经有正式数据库模块来说,使用Fixture载入数据是简单有效方法。...首先,你需要一份json格式数据文件,Django对此提供了很好支持—dumpdata 命令: python manage.py dumpdata myapp myapp/fixtures/myapp.json...# 这个命令将帮助你把数据库myapp 导入到myapp/fixtures/test.json # 这个myapp可以没有,会把数据库所有数据生成Json文件 基础配置 在settings.py...单元测试Fixtures用法详解文章就介绍到这了,更多相关Django Fixtures内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

1.1K30

测试开发技能】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.4K10

利用Django通用类视图(class

框架好处就是,它已经为用户处理了绝大多数场景重复代码,提供了封装好接口,使得我们在开发十分方便。...ListView可以通过你给出model以及想要展示modelfield,在对应数据库查询出对应对象存放在List对象,并传递给template渲染。...如果你在Django设置settings.pyTEMPLATES下配置了'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}')运行您测试脚本

9910

框架篇-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 文件: 添加编辑文章链接

64240

djangoModelForm多表单组合解决方案

所以,基本表单功能看BaseForm已经足够了。 2、从模型创建表单 django对于MVCC与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.3K20

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

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

2.3K10

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模板。

80620

Django 如何使用日期时间选择器规范用户时间输入示例代码详解

如果你模型中含有 datetime 类型字段,表单需要用户输入日期和时间,那么你如何保证不同用户输入时间都遵循一定格式 (DD/MM/YYYY 或者 YYYY-MM-DD) 是个必须要考虑问题...小编今天将尝试以最少代码教你实现如何在 Django 项目中实现日期时间选择器 DateTimePicker。 ?...如果你在模型 DateTimeField 字段名为 visit_date,你只需为 id_visit_date 再生成一个实例即可。...Django 表单会默认为每个输入字段 id 加上 id_前缀。...总结 到此这篇关于Django 如何使用日期时间选择器规范用户时间输入文章就介绍到这了,更多相关 Django 如何使用日期时间选择器规范用户时间输入内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持

5.9K20
领券