Django入门3 简单留言板项目案例及mysql驱动的安装配置
新建jangostart项目
使用manager.py新建app即单独的应用
创建一个message应用
manage.py@djangostart > startapp message
如果app新建多了都在djangostart下,为了区分apps,新建apps目录将message拖入apps文件夹中
引入message需要
From apps.message import views,如果觉得麻烦可以将apps source root
进入django的项目目录,运行会报错
(testvir2) D:\python\djangostart>
Source root配置到settings中
安装mysql驱动
(testvir2) D:\python\djangostart>pip install mysql-python
报错:下载驱动
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
下载MySQL_python-1.2.5-cp27-none-win_amd64.whl 拷贝到虚拟环境当前目录
运行安装
如果要用python3进行开发需要用mysqlclient,接口其实是一样的
配置templates为相对路径:配置settings文件
'DIRS': [os.path.join(BASE_DIR, 'templates')],
Error fetching command 'collectstatic': You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.
Command 'collectstatic' skipped
把static目录加入settings.py配置文件中否则css样式无法正常加载
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
使用manage.py生成django默认表结构
makemigrations migrate
设计关于留言板message的models
Settings文件中注册apps.message
# _*_ coding:utf-8
from __future__ import unicode_literals from django.db import models # Create your models here.
class UserMessage(models.Model):
name = models.CharField(max_length=20, 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"留言信箱") class Meta:
verbose_name = u"用户留言信箱"
根据models生成表
makemigrations message
migrate message
查看表结构
留言板views.html
# _*_ coding:utf-8 _*_
from django.shortcuts import render # Create your views here.
from .models import UserMessage def getform(request):
# all_messages = UserMessage.objects.filter(name="jack02", address="杭州")
#
# for message in all_messages:
# # 删除信息
# # message.delete()
# print message.name
# 提交数据
# user_message = UserMessage()
# user_message.name = "jack"
# user_message.message = "hello jack python"
# user_message.address = "杭州"
# user_message.email = "jack2019@163.com"
# user_message.object_id = "hello02"
# user_message.save() # 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_message = UserMessage()
# user_message.name = name
# user_message.message = message
# user_message.address = address
# user_message.email = "jack2019@163.com"
# user_message.object_id = "hello03"
# user_message.save() message = None
all_messages = UserMessage.objects.filter(name="jacktest")
if all_messages:
message = all_messages[0] return render(request, "message_form.html",{
"my_message": message
})
templates/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="{% url 'go_form' %}" method="post" class="smart-green">
<h1>留言信息
<span>请留下你的信息.</span>
</h1>
<label>
<span>姓名 :</span>
<input id="name" type="text" value="{% ifequal my_message.name|slice:'4' 'jackt' %}jackhastest{% else %}jack has not test{% endifequal %}" 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>
<div class="success-msg"></div>
<label>
<span> </span>
<input type="submit" class="button" value="提交"/>
</label>
{% csrf_token %}
</form> </body>
</html>
# 路由配置 djangostart\djangostart\urls.py
from django.conf.urls import url
from django.contrib import admin
from apps.message.views import getform urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^form/$', getform, name='go_form'),
url(r'^formtest', admin.site.urls)
]
Django入门3 简单留言板项目案例及mysql驱动的安装配置的更多相关文章
- vue+egg.js+mysql一个前后端分离留言板项目
一.前序 我相信每个人前端搬运工和我想法都是一样的,都有一个做全栈的梦,无奈面对众多的后台语言,却不从下手,今天由我来带你们潜入全栈的门槛,注意是门槛.能不能学的会后面的内容全靠坚持了. 我今天主要做 ...
- 原生JS实现简单留言板功能
原生JS实现简单留言板功能,实现技术:css flex,原生JS. 因为主要是为了练手js,所以其中布局上的一些细节并未做处理. <!DOCTYPE html> <html lang ...
- asp.net留言板项目源代码下载
HoverTree是一个asp.net开源项目,实现了留言板功能. 前台体验网址:http://hovertree.com/guestbook/ 后台请下载源代码安装. 默认用户名:keleyi 默认 ...
- PHP实现简单留言板
最近学习了下PHP基础,这里做一个简单的留言板,算是对PHP和MySQL的使用做一个整体的练习吧,不遇到问题总感觉学不到东西. 截图如下: 总结: 1>数据库的简单操作,数据库的增删改查: 2. ...
- 欣欣的留言板项目====超级触动的dbUtil实现留言板
留言板管理系统 我的完成效果图: 提交后: 我的留言板基本架构如图: 创建留言板数据库: 刚开始我的前台主页中写留言信息表单: <body> <h1>留言板</h1> ...
- 2019-10-12,html+php+mysql简单留言板,作业
php+mysql简易留言板,实现注册,登录,注销,查看留言,删除留言 1,index.html登录页面 代码: <!doctype html> <html> <head ...
- Web开发从零单排之二:在自制电子请帖中添加留言板功能,SAE+PHP+MySql
在上一篇博客中介绍怎样在SAE平台搭建一个html5的电子请帖网站,收到很多反馈,也有很多人送上婚礼的祝福,十分感谢! web开发从零学起,记录自己学习过程,各种前端大神们可以绕道不要围观啦 大婚将至 ...
- [原创]mysql 5.6安装配置,主从分离,读写分离简单教程
文章中参考使用了多个博客的资料,汇总而成!其流程准确性被人亦本人实践! https://blog.csdn.net/qq_35206261/article/details/81321201 https ...
- SpringBoot入门最简单的一个项目示例
使用IDEA创建一个SpringBoot项目 1.1 打开IDEA,文件-New-Project 1.2下一步,选择版本8(根据自己安装的JDK版本来选择) 1.3 下一步后点击Web,勾选Sprin ...
随机推荐
- mysql float和decimal
结论: 1. float 默认只保存6位(除去小数点),如果超过6位,则四舍五入,所以float存储的数据是不精确的,只是近似值: 2. decimal,如果输入的数据超过了定义的最大值,那么则溢出, ...
- LINUX基础学习之基础命令(4)和 文件的inode信息 --2019-11-28
一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取硬盘的时候,不会 ...
- 《linux就该这么学》课堂笔记06 编写shell脚本、if、for
1.1.脚本的两种方式 交互式(Interactive):用户每输入一条命令就立即执行. 批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令. 1. ...
- Codeforces H. Prime Gift(折半枚举二分)
题目描述: Prime Gift time limit per test 3.5 seconds memory limit per test 256 megabytes input standard ...
- 如何解决inline-block元素的空白间距 css 完美解决
转载W3CPLUS,链接地址:http://www.w3cplus.com/css/fighting-the-space-between-inline-block-elements 有关于使用inli ...
- 23、matplotlib数据可视化、绘图库模块
matplotlib官方文档:https://matplotlib.org/contents.html?v=20190307135750 matplotlib是一个绘图库,它可以创建常用的统计图,包括 ...
- spark-shell操作hive
本文是在集群已经搭建好的基础上来说的,还没有搭建好集群的小伙伴还请自行百度! 启动spark-shell之前要先启动hive metastore 和 hiveservice2 hive --servi ...
- c+多态的本质:编译器维护了类型信息同时插入了解释执行机制
Calling a virtual function is slower than calling a non-virtual function for a couple of reasons: Fi ...
- SpringBoot 之Spring Boot Starter依赖包及作用(自己还没有看)
spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. spring-boot-starter-amqp 通过spring-rabbit来支持 ...
- MongoDB 实现 create table tab2 as select
1. var result = db.foo.aggregate(...);db.bar.insert(result.result); 2. var temp1 = db.mtb1.find(name ...