天天看點

python初心者

文章目錄

    • 項目快速上手
    • python版本問題
    • Django基礎
      • 1.models.py
      • 2.views.py
      • 3.urls.py
      • 4.調用模闆:settings.py檔案(前後端不分離)
      • 5.連接配接資料庫
      • 建立django項目
      • 檢視版本
      • 注意事項
      • 服務部署 uwsgi+nginx
      • 批量生成測試資料

實際上,此文寫下的時候已經離我真正踏入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(2、3環境共存)
或者
python -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/