刚才知道了如何把前端获取的信息存储到数据库,现在来看如何把数据库信息写到前端。在views.py里:
from django.shortcuts import render
from .models import UserMessage #.的意思是与本文件同一目录
# Create your views here.
def getform(request):
message = None
all_messages = UserMessage.objects.filter(name='bobby')
if all_messages:
message = all_messages[0]
return render(request, 'message_form.html',{"my_message":message})
render 函数第三个参数{"my_message":message}即是向html文件传递数据的关键。再看message_form.html:
<!<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="/static/css/style.css">
</head>
<body>
<form action="/form/" method="post" class="smart-green">
<h1>留言信息
<span>请留下你的信息.</span>
</h1>
<label>
<span>姓名 :</span>
<input id="name" type="text" value="{{ my_message.name}}" name="name" value="{}" class="error" placeholder="请输入您的姓名"/>
<div class="error-msg"></div>
</label>
<label>
<span>邮箱 :</span>
<input id="email" type="email" value="{{ my_message.email}}" name="email" placeholder="请输入邮箱地址"/>
<div class="error-msg"></div>
</label>
<label>
<span>联系地址 :</span>
<input id="address" type="text" value="{{ my_message.address}}" name="address" placeholder="请输入联系地址"/>
<div class="error-msg"></div>
</label>
<label>
<span>留言 :</span>
<textarea id="message" name="message" placeholder="请输入你的建议"></textarea>
<div class="error-msg"></div>
</label>
<div class="success-msg"></div>
<label>
<span> </span>
<input type="submit" class="button" value="提交"/>
</label>
<input type='hidden' name='csrfmiddlewaretoken' value='SfHkbL4feo1G00sJQtbO7TtLN4c2BUwa' />
{% csrf_token %}
</form>
</body>
</html>
几个<input后边我都加上了value="{{ my_message.address}}" name="address"这样的参数。从响应函数可以看出my_message是models的实例,即数据库的一行,my_message.address即为adress字段。这样就行了。
value="{% if my_message.name = 'bobby' %}{{ my_message.address}}{%else %}not bobby{% endif %}"
这是django模板的if-else语句写法。再比如说<form action="/form/"这里,如果在url函数的第三个参数写:name='go_form'
from django.conf.urls import url
from django.contrib import admin
from message.views import getform
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^form/', getform,name='go_form'),
]
则html文件可写为form action="{%url go_form%}"
其他写法见官方文档。