以之前随笔的个人博客添加文章为例:
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), #添加文章