查看“蓝鲸Django: 访问数据库”的源代码
←
蓝鲸Django: 访问数据库
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==数据库数据传入前台== ===修改views.py文件=== moments.view.py: <nowiki>from django.shortcuts import render from django.http import HttpResponse # Create your views here.i from .models import WeChatUser,Status 。。。 def show_status(request): statuses = Status.objects.all() #import pdb #pdb.set_trace() print(statuses.query) return render(request,"status.html",{"statuses": statuses}) 。。。 </nowiki> 浏览器访问http://10.0.0.30:8000/status 会在后台看到这里print(status.query) 的打印结果,实际上是一个select语句: <nowiki>SELECT "moments_status"."id", "moments_status"."user_id", "moments_status"."text", "moments_status"."pics", "moments_status"."pub_time" FROM "moments_status" ORDER BY "moments_status"."id" ASC </nowiki> ===修改html模板=== status.html: [[文件:bd20-3-10.png]] 过滤时间: <nowiki> <p style="float:left; color:gray; font-size:30px">{{ status.pub_time|date:"m-d-Y H:i" }}</p> </nowiki> 修改时区: wechat/settings.py: <nowiki>TIME_ZONE = 'Asia/Shanghai'</nowiki> ===效果=== [[文件:bd20-3-11.png]] ==前台数据传入数据库== ===修改urls.py文件=== wechat/urls.py <nowiki>"""wechat URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/2.1/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: path('', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin from django.urls import path from moments.views import home from moments.views import show_user,show_status,submit_post from django.contrib.auth.views import LoginView,LogoutView urlpatterns = [ path('admin/', admin.site.urls), path('',LoginView.as_view(template_name="homepage.html")), path('', home), path('user',show_user), path('status',show_status), path('post',submit_post), path('exit',LogoutView.as_view(next_page="/")) ] </nowiki> ===修改'退出'链接=== templates/base.html: <nowiki><li><a href="#">About</a></li> <li><a href="/exit">Exit</a></li></nowiki> ===修改settings.py=== wechat/settings.py: 添加两行:(指定网站登陆页面 和登陆后跳转页面) <nowiki>LOGIN_URL='/' LOGIN_REDIRECT_URL='/status'</nowiki> ===修改表单(homepage.html)=== 在该页中找到表单并做如下修改: [[文件:bd20-3-12.png|500px]] <nowiki><form style="background-color:white; margin-top:25vh; padding:2vh" method="post" action=""> {% csrf_token %} <div class="form-group"> <input type="text" class="form-control" id="exampleInputEmail1" placeholder="Enter username" name="username" > </div> <table style="width:100%"> <tr> <td> <div> <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password" name="password"> </div> </td> </nowiki> 填写浏览器访问地址进行访问:http://10.0.0.30:8000/ 会看到登陆首页,输入正确用户名和密码会进入状态页。 ===登陆控制=== 顾名思义,在访问页面前必须先登陆 为moments.views.py里的每一个函数加上修饰器,在访问页面前必须先登陆 [[文件:bd20-3-13.png]] <nowiki>from django.shortcuts import render from django.http import HttpResponse # Create your views here.i from .models import WeChatUser,Status from django.contrib.auth.decorators import login_required def home(request): return render(request,"homepage.html") @login_required def show_user(request): po = {"name": "Xiao Po", "region": "Xi'an", "motto": "I love Xi'an", "pic": "Po2.jpg", "email": "po@disney.com" } return render(request,"user.html",{"user":po}) @login_required def show_status(request): statuses = Status.objects.all() #import pdb #pdb.set_trace() print(statuses.query) return render(request,"status.html",{"statuses": statuses}) @login_required def submit_post(request): return render(request,"my_post.html") </nowiki> 现在你会发现:访问任何页面 ,如http://10.0.0.30:8000/status 都会强制跳转到登陆页面,先登陆。 [[文件:Bd20-3-6.png]] ===案例2:修改表单=== post.html: [[文件:bd20-3-14.png]] <nowiki>{% extends "base.html" %} {% block title %}Status{% endblock %} {% block post %}class="active"{% endblock %} {% block content %} <div class="container"> <div class="row"> <form method="post" enctype="multipart/form-data"> {% csrf_token %} <textarea name="text" class="form-control" rows="5"></textarea> <input type="file" id="exampleInputFile" name="pic"> <button style="float:right;margin-top:22px" type="submit" class="btn btn-primary btn-lg">Submit</button> </form> </div> <hr> </div> {% endblock %} </nowiki> ===上传文字=== moments.view.py: <nowiki> from django.shortcuts import render,redirect @login_required def submit_post(request): user = WeChatUser.objects.get(user=request.user) text = request.POST.get("text") if text: status = Status(text=text, user=user) status.save() return redirect("/status") return render(request,"my_post.html") </nowiki>
返回至
蓝鲸Django: 访问数据库
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息