我的一个视图需要添加一个项目以及其他功能,但是我已经有了另一个专门添加项目的视图.

我可以做一些类似的事情吗:

def specific_add_item_view(request):
    item = Item.objects.create(foo=request.bar)

def big_view(request):
    # ...
    specific_add_item_view(request)

推荐答案

视图函数应将呈现的HTML返回给浏览器(以HttpResponse表示).调用视图内的视图意味着您(可能)要渲染两次.相反,只需将"add"分解到另一个不是视图的函数中,并让两个视图都调用它.

def add_stuff(bar):
    item = Item.objects.create(foo=bar)
    return item

def specific_add_item_view(request):
    item = add_stuff(bar)
    ...

def big_view(request): 
    item = add_stuff(bar)
    ...

Django相关问答推荐

为什么当对字段使用自定义序列化器时,Django Rest框架中Inbox字段会消失?

如何在Django模型mixin字段定义中引用模型名称?

覆盖保存以创建范围的多个对象()

在 Trunc 的 kind 属性中使用字段

如何使用具有某些权限的 Django 组的转储数据和加载数据?

包含资源时,DRF 返回我的软删除记录

遍历django模板中的外键相关表

Django Calendar日历小部件?

Django 1.9:字段与父模型中不存在的字段的字段冲突

在 Django 的 ORM 中访问存储过程的最佳方法是什么

Apache + mod_wsgi 与 nginx + gunicorn

Django 向用户推送 HTTP 响应

在 Django 中注册用户的最佳方法

django:manytomanyfield 和 through 如何出现在 admin 中?

UnicodeEncodeError:ascii编解码器无法编码字符

有日期时间±无穷大吗?

在 Django Admin 中过滤多对多框

在 Django 中测试different layers的最佳实践是什么?

如何使用 ModelSerializer 显示所有模型字段?

django.urls.path中name参数的作用是什么?