首页 > 其他 > 详细

django_cvb和fvb

时间:2020-01-05 23:08:00      阅读:99      评论:0      收藏:0      [点我收藏+]

cvb 即class view 和funtion view  两种方式 发送get和post请求

前后端不分离的写法,定义一个html(form.html),在view中写逻辑(cvb&fvb)

备注:需要注意csrf的问题,如果多次提交重复的数据会报403,解决办法两种

1.在settings.py-MIDDLEWARE-将csrf(第四行)注释掉

2.在form.html中写{% csrf_token%} 

form.html的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/add_article/" method="post">
{% csrf_token %}
    title:<input type="text" name="title">
    desc:<input type="text" name="desc">
    content:<input type="text" name="content">
    category:<select name="category">
        {% for c in categorys %}
            <option value="{{ c.id }}">{{ c.name }}</option>
        {% endfor %}
    </select>
    <input type="submit" value="提交">
</form>
</body>
</html>

views.py中的代码

#function fvb方式
def add_article(request):
    if request.method == GET:
        categorys = Category.objects.all()
        return render(request,form.html,locals())
    else:
        title = request.POST.get(title)
        desc = request.POST.get(desc)
        content = request.POST.get(content)
        category = request.POST.get(category)
        article = Article(title=title,desc=desc,category_id=category,content=content)
        article.save()
        return HttpResponseRedirect(/blog)#重定向


#class cvb方式
class ArticleView(View):
    def get(self,request):
        categorys = Category.objects.all()
        return render(request, form.html, locals())
    def post(self,request):
        title = request.POST.get(title)
        desc = request.POST.get(desc)
        content = request.POST.get(content)
        category = request.POST.get(category)
        article = Article(title=title, desc=desc, category_id=category, content=content)
        article.save()
        return HttpResponseRedirect(/blog)  # 重定向

urls.py

from django.contrib import admin
from django.urls import path
from user.views import index,test,blog,detail,add_article,ArticleView

urlpatterns = [
    path(admin/, admin.site.urls),
    path(index/, index),#添加访问的url,index/可自定义,index是views.py中的方法
    path(test/, test),
    path(blog/, blog),
    # path(‘category/<int:id>‘, category),
    path(detail/, detail),
    # path(‘add_article/‘, add_article),#fvb方式
    path(add_article/, ArticleView.as_view()),#cvb方式


]

django_cvb和fvb

原文:https://www.cnblogs.com/mhmh007/p/12153980.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!