在哪里最好地使用Django框架执行数据库操作?

使用者

在此先感谢您的帮助。我是django的新手,也是Web开发的新手。我一直在尝试自学并使用Django框架开发网站,尽管到目前为止一切正常,但是我不确定我是否真的在以最好的方式做事。

通常,在我的django应用程序中,我会在某些地方想要以某种方式修改数据库模型的内容。一个典型的用例是我的网站上有一个按钮,上面写着“添加帖子”:

models.py:

from django.db import models

# data model import
from django.contrib.auth.models import User

# Create your models here.
class Post(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    post = models.CharField(max_length=1024)

urls.py:

from django.urls import include, path
from . import views

urlpatterns = [
    path('', views.post, name='new_post'),
    path('post_exec', views.post_exec, name='post_exec'),
]

views.py:

from django.contrib import messages
from django.shortcuts import render, redirect

# import data models
from django.contrib.auth.models import User
from .models import Post

def post(request):
    # make sure the user has privileges
    user = User.objects.get(id = request.user.id)
    if not user.is_superuser:
        return redirect('home')
       
    return render(request, 'post.html')
    
    
def post_exec(request):
    
    # make sure the user has priveledges
    user = User.objects.get(id = request.user.id)
    if not user.is_superuser:
        return redirect('home')
    
    # create the post
    new_post = Post.objects.create()
    new_post.user = user
    new_post.post = request.POST['post']
    new_post.save()

    # this could redirect to a confirmation page or something too
    return redirect('home')

您可以看到我在这里所做的是,每当由于用户输入而需要对数据库进行更改时,我都会在django视图中执行代码以执行请求的数据库更改,然后在完成数据库更改后重定向到另一个页面。虽然这样做有效,但感觉有点笨拙(您最终需要的是从未真正使用过的页面),在安全性方面似乎很粗略(尽管我正在检查每个页面上的凭据),并且我想有一种更好的方法去做这个。

有经验的Django开发人员可以针对我应该如何针对这些特定类型的常见数据库操作最好地构建项目提供一些建议吗?

亚历克斯·伯拉

Djangoviews是组织项目的CRUD系统的好地方,以便用户可以管理其数据。您可以使用基于类的视图对GET,POST等请求进行分组。还有一些更好的方法可以将授权系统与login_required()装饰器,LoginRequiredMixin类和其他解决方案一起使用,在这里可以进行介绍

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何独立执行数据库操作?

PHP JSONArray解码并执行数据库操作

在Django频道中执行数据库查询

使用“CosmosExecutionStrategy”执行数据库操作时超出了最大重试次数 (6)

如何最好地运行数据库后台操作?

使用JPA执行数据库功能

执行数据库

如何编写类以执行数据库操作-Spring整数

onMessageReceived 触发时如何执行数据库操作?

在异步node.js环境中执行数据库操作

在 Mule 工作流中执行数据库操作后保留原始负载

LINQ可以比SQL更快地执行数据库操作吗?

PHP + Codeigniter + MySQL->无法执行数据库操作

遍历结构并执行数据库查询

在计划作业中执行数据库调用

在PostgreSQL中自动执行数据库备份

何时执行数据库迁移?

数据库 PHP 中的“执行数组”问题

在Laravel中使用Eloquent ORM使用LIKE执行数据库搜索

是否可以使用Node worker线程执行数据库插入?

Rails 4:在模型中执行数据库操作是否是一种不好的做法?

我应该总是在android中的单独线程中执行数据库操作吗?

使用关系数据,如何防止Rails对每个关联值执行数据库请求?

要使用XAMPP MySql执行数据库复制,Master和Slave是否需要具有相同的版本?

DjangoRestAPI - 使用 ModelViewSet 在运行您自己的函数(如事件处理程序)时执行数据库管理

部署War时如何执行数据库执行

将选定行的数据传递给 OnContextItemSelected 以执行数据库删除

如何在Ruby中执行数据库写入运行状况检查?

在代码接收接受帮助器中动态执行数据库转储