文章目錄
-
- 項目快速上手
- 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/