欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python初心者

程序员文章站 2022-05-23 21:53:31
...

实际上,此文写下的时候已经离我真正踏入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/