python初心者
实际上,此文写下的时候已经离我真正踏入python项目化 的大门已经过去一年多了,但是仍然有一种还处于初心者的感觉,对新的环境和知识感到手足无措,上下求索。去年的我非常稚嫩,现在依旧。不明白卡在哪里了,像一棵生长十分缓慢的树,大概是环境驱动型人格吧。
说实话,我面对未来实在是手足无措,其原因大概是没有做足准备,但是面对别人还是要轻松的微笑啊,总不能让其他人替我担心吧?只好尽力整理一下自己当初的心情,当初那种无知的心情(苦笑)
没有什么特别的愿景,只希望一切顺顺利利
项目快速上手
mkdir 文件夹
git clone 仓库url
# 创建虚拟环境并指定PYTHON版本
# 2.7
virtualenv venv --python=python2.7
# 3.6
# 方法1
virtualenv venv --python=python3.6
# 方法2
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python manage.py runserver 0:9900
python版本问题
当一台主机同时存在两个版本的python(2.7&3.8)时,一般会采用系统PATH中配置的那个
但是
使用pip和python命令唤醒2.7,使用pip3和python3命令唤醒3.8
2.7python与全部版本mysql适配,以及适配django1.10
3.6python与所有版本django适配以及适配mysql8.0
Django基础
1.models.py
里面写表的结构类 运行
python manage.py makemigrations app名
python manage.py migrate app名
生成数据表
2.views.py
通过导入models.py文件来创建数据
from blog import models
def db_handle(request):
models.UserInfo.objects.create(username=‘andy’,password=‘123456’,age=33)
return HttpResponse(‘OK’)
修改数据:filter(id=1).update(age=18)#找到id=1的数据,将age改为18
3.urls.py
配置路由,访问views.py文件
from blog import views
urlpatterns = [
url(r’^admin/’, admin.site.urls),
url(r’^test’, views.db_handle),==>指向test的路由,跳转到views.db_handle方法,执行t1.html页面
#注:lrhold/abc表示的是根目录下的abc文件,而domain/abc/指的是 abc目录下的default文件,带不带斜杠常用于SEO优化
]
4.调用模板:settings.py文件(前后端不分离)
配置模板的路径
TEMPLATES=[
{
…
‘DIRS’: [os.path.join(BASE_DIR,‘templates’)],#配置模板路径
},]
5.连接数据库
pip install PyMySQL
修改:配置文件同目录下的init.py
import pymysql
pymysql.install_as_MySQLdb()
或者
pip install mysqlclient
方法1.
修改settings中的DATABASES变量
方法2.
数据库配置存放在mysql.cnf
在settings中引用:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DATABASES = getDatabase(BASE_DIR)
import platform
import os
def getDatabase(base_dir):
p = platform.system()
if p == 'Windows':
return {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
"read_default_file": os.path.join(base_dir, 'mysqltest.cnf'),
}
}
}
else:
return {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
"read_default_file": os.path.join(base_dir, 'mysql.cnf'),
}
}
}
创建django项目
pip3 install django==版本号
django-admin startproject blog_project ==》cd(注意不要.py)
python manage.py startapp blog
python manage.py runserver 8000
查看版本
python -m django --version
注意事项
1.django连接数据库时页面显示url变量不匹配:将url第一个变量置空
urlpatterns = [
url('^', admin.site.urls),
url('^', index, name='index'),
]
2.配置settings.py==>INSTALLED_APP添加app名
3.配置settings.py==>ALLOWED_HOSTS = [‘10.xxx.xxx.xxx’,]
4.使用vscode 的sftp连接远程linux时提示权限出错,应当回退vscode版本至1.34
5.windows没有python-dev包,也不能在windows上部署ngnix+uswgi服务器,pip安装会失败
服务部署 uwsgi+nginx
1.启动:uwsgi --ini uwsgi.ini
2.写一个ngnix.conf放到项目下面,将这个conf软链接或者移到/etc/nginx/sites-enabled/下面,最后service nginx reload
[uwsgi.ini]
# 使用9100端口
http= :9100
#socket = :9100
# 项目位置 mysite是我的项目名称
chdir = /home/liting/projects/demand-management/logsites
# 修改为自己的项目名称即可
module = logsites.wsgi
# 虚拟环境目录 env是我的服务器虚拟环境名称
home = /home/liting/workspace/Envs/env3
master = true
# 最大工作进程,一般根据核心数设置,也可以任意设置
processes = 4
vacuum = true
# 日志文件
daemonize = /home/liting/projects/demand-management/logsites/uwsgi.log
# 静态文件目录
static-map = /static=/home/liting/projects/demand-management/logsites/static
pidfile=uwsgi.pid
daemonize=uswgi.log
[nginx.conf]
server {
listen 80;
server_name 10.xxx.xxx.xxx:9100;
charset utf-8;
client_max_body_size 75M;
# 修改为你的媒体文件目录
location /media {
alias /home/liting/projects/demand-management/logsites/media; # your Django project's media files - amend as required
}
# 修改为你的静态文件目录
location /static {
alias /home/liting/projects/demand-management/logsites/static; # your Django project's static files - amend as required
}
location / {
# 这个是上面uwsgi.ini设置的8080端口,前后要一致,nginx就算靠这个和uwsgi通信的
uwsgi_pass 10.xxx.xxx.xxx:9100;
include /etc/nginx/uwsgi_params;
}
}
批量生成测试数据
参考 https://www.zmrenwu.com/courses/hellodjango-blog-tutorial/materials/80/