django基础,前后端分离数据传参

以之前随笔的个人博客添加文章为例:

1.一个简单的添加文章的html:add.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加文章</title>
</head>
<body>
<form action="/add" method="post">
    title:<input name="title">
    content:<input name="content">
    <select >
        {% for nav in daohang %}
            <option name="nav_id" value={{ nav.id }}></option>
        {% endfor %}
    </select>
    <input type="file",name="img">
    <input type="submit",name="提交">


</form>
</body>
</html>

页面:

 

 

2.后端传值:

获取前端传值:

(1)Get方法,从url中获取参数:request.GET.get("参数名"),如:page=request.GET.get('page',1),这里的1是默认值

(2)Post方法:request.POST.get(“参数名”)。如:title=request.POST.get('title') 

这里的参数名是前端定义的参数名

def add_article(request):
    '''添加文章'''
    if request.method=='GET':     #直接在浏览器里打开页面就是get请求,这里是一进到页面,就把add.html内容返回
        return render(request,"add.html")   
    else:
        title=request.POST.get('title')   #post请求,获取传递数据
        content=request.POST.get('content')
        nav_id=request.POST.get('nav_id')
        img=request.FILES.get('img')   #获取file上传文件的数据
        models.Article.objects.create(title=title,content=content,nav_id=nav_id,img=img)
        return HttpResponseRedirect('/index')    #提交后跳转到的页面

3.urls.py:添加add/地址

from user import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),   #这里只写方法名,不写括号
    path('info/<int:id>', views.info),
    path('nav/<int:id>', views.nav_article),   #查询地址例如nav/6,这里的id,传给views.nav_article  int是id类型,如果是字符串就是str
    #后边可以跟多个地址,如:path('nav/<int:id>/<str:article_id>', views.nav_article)
    path('add/', views.add_article),      #添加文章

 

posted @ 2019-10-25 17:14  4jd121de2gf4e2sa5d  阅读(520)  评论(0编辑  收藏  举报