需要的环境......(略)
使用pycharm社区版搭建项目(专业版有更强大功能):
- 打开terminal 执行命令: django-admin startproject first_project 如下图:
在Django_server目录下会创建一个first_project项目;
- 连接mysql数据库:
如果未安装mysqlclient驱动程序,需要执行命令:pip3 install mysqlclient;如遇报错(红一片的那种),需要先在https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient下载对应python版本的mysqlclient(我的是3.5版本)
- 下载完成后,在该文件所在目录打开命令行执行窗口,执行命令:
- pip3 install mysqlclient‑1.4.4‑cp35‑cp35m‑win_amd64.whl (根据版本而定)
成功以后对,配置数据库连接,打开settings.py文件编写代码:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '数据库名称',
'USER': '数据库用户名',
'PASSWORD': '密码',
'HOST': 'localhost',
'PORT': '3306',
}
}
执行命令:python manage.py shell 如图:
测试数据库配置是否成功:
>>> from django.db import connection
>>> cursor = connection.cursor()
如果没有报错,则配置成功。
- 创建app
首先切换到项目路径下:cd first_project
执行命令:python manage.py startapp student
会在项目下创建一个student目录。
- 创建模板文件的目录:
在项目根目录下新建一个templates目录
- 启动:python manage.py runserver (默认端口号8000)
启动成功!
在浏览器访问:127.0.0.1:8000 显示:
- 添加web工程页面
打开first_project/views.py输入:
from django.http import HttpResponse
import datetime
def hello(request):
date = datetime.datetime.now() # 获取当前时间
html = '<h2>Hello World!现在时间是:{}</h2>'.format(date)
return HttpResponse(html)
- url映射配置:
打开first_project/urls.py输入:
from django.conf.urls import url
from django.contrib import admin
from first_project import views
urlpatterns = [
url('admin/', admin.site.urls),
url(r'^hello/$', views.hello),
]
在浏览器访问:127.0.0.1:8000/hello
成功!
- 逻辑和页面分离
在新建的templates目录下创建一个student.html文件编写如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>hello</title>
</head>
<body>
<ul>
{% for student in students %}
<li>
id:{{student.id}},姓名:{{student.name}},age:{{student.age}}
</li>
{% endfor %}
</ul>
</body>
</html>
在Student/views.py 文件下编辑代码:
from django.shortcuts import render, render_to_response
# Create your views here.
def showStudents(request):
list = [{'id': 1, 'name': 'Jack'}, {'id': 2, 'name': 'Rose'}]
return render_to_response('student.html', {'students': list})
添加url映射:
from django.conf.urls import url
from django.contrib import admin
from first_project import views
from student import views as student_views
urlpatterns = [
url('admin/', admin.site.urls),
url(r'^hello/$', views.hello),
url(r'^showStudents/$', student_views.showStudents),
]
修改firstproject目录下的setting.py配置文件:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR + "/templates", ],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
此时,访问127.0.0.1:8000/showStudents显示出如下信息:
- 创建模型
打开student目录下的models.py编写代码:
from django.db import models
# Create your models here.
class Student(models.Model):
name = models.CharField(max_length=20)
激活模型:
打开setting.py找到 INSTALLED_APPS 设置:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'student',
]
将新建的models同步到数据库:(请使用mysql6以上版本)
在项目目录下执行命令:
python manage.py makemigrations
python manage.py migrate
数据库中创建如上表;
附录:
字段
1、models.AutoField 自增列= int(11)
如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。
2、models.CharField 字符串字段
必须 max_length 参数
3.models.DateField 日期类型 date
对于参数,auto_now =True则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。
4.models.DateTimeField 日期类型 datetime
同DateField的参数
5.models.EmailField 字符串类型(正则表达式邮箱)=varchar
对字符串进行正则表达式
6.models.FloatField 浮点类型= double
7.models.IntegerField 整形
8.models.SmallIntegerField 数字
数据库中的字段有:tinyint、smallint、int、bigint
9、models.TextField 字符串=longtext
10、models.TimeField 时间 HH:MM[:ss[.uuuuuu]]
11、models.URLField 字符串,地址正则表达式
12、models.BinaryField 二进制
13、models.ImageField图片
14、models.FilePathField文件
参数
1、null=True
数据库中字段是否可以为空
2、blank=True
django的Admin中添加数据时是否可允许空值
3、primary_key =False
主键,对AutoField设置主键后,就会代替原来的自增 id 列
4、auto_now 和 auto_now_add
auto_now 自动创建---无论添加或修改,都是当前操作的时间
auto_now_add 自动创建---永远是创建时的时间
5、choices
GENDER_CHOICE =(
(u'M', u'Male'),
(u'F', u'Female'),
)
gender = models.CharField(max_length=2,choices = GENDER_CHOICE)
6、max_length
7、default 默认值
8、verbose_name Admin中字段的显示名称
9、name|db_column 数据库中的字段名称
10、unique=True 不允许重复
11、db_index =True 数据库索引
12、editable=True 在Admin里是否可编辑
欢迎关注wx公众号:python web小栈,共同探讨学习