Django+mysql+阿里云制作一个简单的网页(配置)

Django+mysql+阿里云制作一个简单的网页(配置)

仅作个人记录开发配置以及遇到的问题,不作具体教程:

开发环境: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_app

2.刷新数据库设置(使用sqlite3时对models.py有更新 或 使用其他数据库,数据库表有变动时 使用以下命令更新)
python manage.py makemigrations
python manage.py migrate

3.运行服务器
python manage.py runserver 127.0.0.1:8000

(2)setting.py文件配置

Django+mysql+阿里云制作一个简单的网页(配置)_第1张图片

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
Django+mysql+阿里云制作一个简单的网页(配置)_第2张图片

(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”

你可能感兴趣的:(Django网页)