在此先感谢您的帮助。我是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开发人员可以针对我应该如何针对这些特定类型的常见数据库操作最好地构建项目提供一些建议吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句