1、settings.py中修改INSTALLED_APPS
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'apps.message', #添加App名称 ]
2、在message/models.py中添加模型(数据库映射,模型以类表示,类为数据库的表,类的属性为表的列)
from django.db import models # Create your models here. # 创建模型 class UserMessage(models.Model): object_id = models.CharField(max_length=50, default='', primary_key=True, verbose_name=u"主键") name = models.CharField(max_length=20, null=True, blank=True, default="", verbose_name=u"用户名") email = models.EmailField(verbose_name=u"邮箱") address = models.CharField(max_length=100, verbose_name=u"联系地址") message = models.CharField(max_length=500, verbose_name=u'留言信息') """ 1、CharField必须设置max_length,不然报错 2、default设置默认值 3、primary_key设置主键 4、verbose_name设置人读别名 5、每个模型都是django.db.models.Model 的一个Python 子类 6、模型的每个属性都表示为数据库中的一个字段 """ class Meta: verbose_name = u"用户留言信息" verbose_name_plural = verbose_name """ verbose_name:单数 verbose_name_plural:复数 verbose_name_plural = verbose_name:作用为设单数 """
3、Tools工具栏下 运行run manage.py Task,分别输入
makemigrations message
migrate message
数据库中生成:message_usermessage表
4、测试:apps/message/views.py文件中可以取出或者写入数据库数据
from django.shortcuts import render from apps.message.models import UserMessage #倒入模型类 # Create your views here. def getform(request): all_me = UserMessage.objects.all() all_me.delete() #删除数据库中的全部数据 for me in all_me: me.delete() #删除数据库中的一条数据 # 取数据库中的数据 all_messages = UserMessage.objects.all() # 取所有数据 all_messages为QuerySet类型 for message in all_messages: print(message) # 向数据库中写数据 user = UserMessage() user.name = 'huang' user.message = 'world' user.email = '2@2.com' user.address = 'changsha' user.object_id = 3 user.save() # 保存 return render(request, 'message_form.html')
5、用户填写表单,程序向数据库传数据
打开templates/message_form.html文件,根据urls.py文件中配置的url
修改message_form.html文件,给action添加/form/属性:
<form action="/form/" method="post" class="smart-green"> #/form/根目录下的form
重新运行程序提前表单出现以下错误,这是Django的一种安全机制,不能随便提交表单:
解决上面错误要在message_form.html文件中添加:{%csrf_token%},重新运行提交就解决了。
通过表单向数据库提交数据
from django.shortcuts import render from apps.message.models import UserMessage #倒入模型类 # Create your views here. def getform(request): # 提交表单是POST请求 # get中的参数要与html文件表单中的name属性完全相同 if request.method == 'POST': name = request.POST.get('name', '') message = request.POST.get('message', '') address = request.POST.get('address', '') email = request.POST.get('email', '') user = UserMessage() user.name = name user.address = address user.email = email user.message = message user.object_id = '5' user.save() #保存 return render(request, 'message_form.html')
从数据库中取数据写入表单与配置url
#apps/message/views.py文件 from django.shortcuts import render from apps.message.models import UserMessage #倒入模型类 # Create your views here. def getform(request): all_message = UserMessage.objects.filter(name='char') #取name=char的数据 message = all_message[0] return render(request, 'message_form.html', {'my_message': message}) #{'my_message': message}传数据给html
#html文件 <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" 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="请输入你的建议">{{ my_message.message }}</textarea> <div class="error-msg"></div> </label> #input用value={{xxx.xxx}}写入值 #textarea 写在标签中间{{xxx.xxx}}
from django.conf.urls import url from django.contrib import admin from apps.message.views import getform #倒入配置的views页面函数 # 修改前端显示url urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^form/$', getform, name='go_form') #给url配置别名,好入是修改r'^form/$',html也不会改,通用性更强 ]
再修改html文件
<form action="{% url 'go_form'%}" method="post" class="smart-green"> #把action="/form/"改为 action="{% url 'go_form'%}",通用性更强