仅作个人记录开发配置以及遇到的问题,不作具体教程:
开发环境:Windows10,Python3.6,Django1.11.7,Mysql5.7
服务器:阿里云 CentOS7
工程名称:Address_Book
App名:ABook
网页链接:http://112.74.161.44/login
( 请使用谷歌或火狐访问 )
#创建Django工程部分跳过
1、Django的配置
(1)常用命令:
1.新建app
python manage.py startapp my_app2.刷新数据库设置(使用sqlite3时对models.py有更新 或 使用其他数据库,数据库表有变动时 使用以下命令更新)
python manage.py makemigrations
python manage.py migrate3.运行服务器
python manage.py runserver 127.0.0.1:8000
(2)setting.py文件配置
1.红线1:新建App后要把App加入到INSTALLED_APPS上,这里貌似自动加入了,否则直接后面加上字符串”my_app”(对应的app名称)
2.红线2:注释这行后(点击没有处理的submit按钮-发送post请求)就不会报CSRF错误页面
3.红线3:设置工程路由urls,默认新建工程后已设置
(3)mysql数据库接入
Django默认使用的是sqlite3数据库,要用其他数据库要有相关配置
# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases
DATABASES = {
'default': {
# 默认使用sqlite3,所以先把它们注释掉
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mycontact', # 你的数据库名称
'USER': 'ABook', # 你的数据库用户名
'PASSWORD': 'abab', # 你的数据库密码
'HOST': '', # 你的数据库主机,留空默认为localhost
'PORT': '3306', # 你的数据库端口
}
}
然后因为Django默认用的是MySQLdb,但MySQLdb只支持python2.7,因而转用pymysql
安装pymysql后,在 _ init_.py里加入以下语句
import pymysql
pymysql.install_as_MySQLdb()
然后通过以下示例语句便可访问MySQL
1.选择语句
from django.db import connection, transaction
def select(sql):
try:
cursor = connection.cursor()
# Data retrieval operation - no commit required
cursor.execute(sql)
row = cursor.fetchall()
# fetchone()返回一条记录,fetchall()返回所有记录
cursor.close()
return row
except:
print(sql)
else: pass
2.改变表内容的语句(需要transaction.commit())
def table_perform(sql):
try:
cursor = connection.cursor()
# Data modifying operation - commit required
cursor.execute(sql)
transaction.commit()
cursor.close()
except:
print(sql)
else:pass
(3)加入静态文件路径
setting.py文件最后
static文件夹在工程目录的下一级,即与App目录同级
用于存放js,css等静态文件,html存放在原有的templates文件夹
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),)
2.网站在本地完成搭建后,部署到阿里云
(1)购买阿里云学生版服务器9.9元/月
(2)在服务器控制台中的 实例》管理》本例安全组》配置规则》快速创建规则
添加自己的Django项目所用到的端口,如8000
(3)在服务器下搭建环境
1.安装python3.6
2.安装Django
3.安装Mysql
可能出现的问题:
i)升级python2.7到3.6后出现yum无法使用的问题:
except KeyboardInterrupt,e:
SyntaError:invalid syntax
这个时候我们需要修改yum配置文件,将python版本只想以前的旧版就可以了。
#vi /usr/bin/yum
把 #!/usr/bin/python
改为#!/usr/bin/python2.7
#vim /usr/libexec/urlgrabber-ext-down
将/usr/bin/python
改为/usr/bin/python2.7
ii)pip install django 无法安装
错误Command “python setup.py egg_info” failed with error code 1 in
这是因为你电脑同时用 Python2.7+ 和3.5+ 版本. 默认pip会使用 2.7+ 版本,而有些库依赖3.5+版本.
1.这时只需要指定使用 3.5+ 对应的pip版本即可.
python -m pip install Django
python -m pip install pymysql
2.注意: 有时候你可能需要先更新一下pip版本
python -m pip install --upgrade pip
iii)yum源不足
换用阿里云的镜像
http://mirrors.aliyun.com/
然后可以直接安装mysql,mysql-server
iiii)使用Django后提示mysqlclient版本过低
方法:进入python安装路径下的
/site-packages/django/backends/base.py
(路径大概是这样,没有就用 find / -name base.py)
把base.py里的
if version(xx
那行if代码注释就可以了
(4)完成后通过FileZilla软件把本地的项目文件夹传到服务器的linux系统
(5)然后在终端进入此工程文件夹执行
python manage.py runserver 0.0.0.0:8000
开启服务器,便可在其他主机访问此网页
(6)“最后不要用自带runserver来作为正式使用的服务,Django官方都是如此建议的,因为这样可能导致严重的性能问题。要用请用apache/nginx/tornado之类高并发http服务器转发wsgi”