時(shí)間:2023-05-31 14:12:02 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-05-31 14:12:02 來(lái)源:網(wǎng)站運(yùn)營(yíng)
第26期-Django開(kāi)發(fā)-Task2快速搭建網(wǎng)站:python3 manage.py startapp APPNAME
settings.py修改INSTALLED_APPS加入APPNAMEpython3 manage.py createsuperuser
但是在創(chuàng)建前應(yīng)該先同步數(shù)據(jù)庫(kù)python3 manage.py migrate
根據(jù)提示進(jìn)行輸入。成功后可以看到如下畫面:from django.db import models# Create your models here.class Blog(models.Model): title = models.CharField(max_length=50, verbose_name="標(biāo)題") content = models.TextField(verbose_name="文章內(nèi)容", default="") count = models.IntegerField(verbose_name="閱讀次數(shù)", default=0) creat_time = models.DateTimeField(auto_now=True, verbose_name="創(chuàng)建時(shí)間") class Meta: verbose_name = '博客管理' verbose_name_plural = verbose_name def __str__(self): return self.title
from django.contrib import adminfrom .models import Blog# Register your models here.@admin.register(Blog)class BlogAdmin(admin.ModelAdmin): list_display=("title", "creat_time", "count")
同步到數(shù)據(jù)庫(kù)python3 manage.py makemigrationspython3 manage.py migrate
注意一行一行的輸入verbose_name,顯示的名字
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, "templates")], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, },]
在添加 os.path.join(BASE_DIR, "templates")前記得先經(jīng) os 庫(kù)導(dǎo)入進(jìn)來(lái)views.py
from django.shortcuts import render# Create your views here.def index(request): return render(request, "index.html")
將我們定義的方法引入進(jìn)來(lái),然后定義好訪問(wèn)什么路徑來(lái)執(zhí)行這個(gè)方法在 templates 文件夾下創(chuàng)建一個(gè) html 文件
def read_blog(request,id): print(f"{id}:我是通過(guò)前端點(diǎn)擊鏈接來(lái)的") blog = Blog.objects.get(id=id) return render(request, "content.html", {"blog":blog})
urls.pyfrom blog.views import read_blogurlpatterns = [ path('admin/', admin.site.urls), path("", index, name="index"), path("read/<int:id>", read_blog, name="read_blog"),]
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'blog', 'USER': 'blog', 'PASSWORD': '你的密碼', 'HOST': '虛擬機(jī)的IP', 'PORT': '3306', }}
config里面的__init__.pyimport pymysqlpymysql.install_as_MySQLdb()
mysql -u root -p
進(jìn)入MySQL終端后use mysql;update user set host = '%' where user = 'root'; # 此處的root改為想要遠(yuǎn)程登錄的賬號(hào)select host, user from user;
參考鏈接:GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果你想允許用戶myuser從ip為192.168.1.3的主機(jī)連接到mysql服務(wù)器,并使用mypassword作為密碼GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;flush privileges; #一定要加上這一句
如果是低版本的MySQL,記得把配置文件my.ini做如下操作#bind-address = 127.0.0.1
這一行注釋掉sudo apt install supervisor -y
pip3 install gunicorn
它的配置要比用 uwsgi 方便很多
#!/bin/bash#項(xiàng)目的根目錄NAME="MyBlog"DJANGODIR=/DjangoDev/www/MyBlog #Django project directoryUSER=root # the user to run asGROUP=root # the group to run asNUM_WORKERS=1 # how many worker processes should Gunicorn spawnDJANGO_SETTINGS_MODULE=config.settings # which settings file should Django useDJANGO_WSGI_MODULE=config.wsgi # WSGI module nameecho "Starting $NAME as `whoami`"# Activate the virtual environment# 虛擬環(huán)境的路徑cd $DJANGODIRsource /DjangoDev/env/bin/activateexport DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULEexport PYTHONPATH=$DJANGODIR:$PYTHONPATH# Create the run directory if it doesn't existRUNDIR=$(dirname $SOCKFILE)test -d $RUNDIR || mkdir -p $RUNDIR# Start your Django Unicorn# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)# gunicorn的路徑,一般在虛擬環(huán)境的bin目錄下exec /DjangoDev/env/bin/gunicorn ${DJANGO_WSGI_MODULE}:application /--name $NAME /--workers $NUM_WORKERS /--user=$USER --group=$GROUP /--log-level=debug /--log-file=-
USER=server # the user to run as
GROUP=server # the group to run as
這里的用戶名要改為自己的,管理員就是root
chmod +x gunicorn_start.sh
./gunicorn_start.sh
location /static/ { #靜態(tài)文件目錄 alias /DjangoDev/www/MyBlog/static; expires max; access_log off; log_not_found off; }location / {#Django地址 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_redirect off; if (!-f $request_filename) { proxy_pass http://127.0.0.1:8000; break; } }
sudo vim /etc/supervisor/conf.d/myblog.conf
并寫入如下內(nèi)容[program:myblog]command = /DjangoDev/www/MyBlog/gunicorn_start.shuser = rootautostart=trueautorestart=trueredirect_stderr = truestdout_logfile = /var/log/myblog.logstderr_logfile = /var/log/myblog.err
user = root最后更新一下我們?cè)O(shè)置的一系列內(nèi)容
同樣也要修改成為自己的用戶名
sudo supervisorctl updatesudo supervisorctl reload
STATIC_ROOT = os.path.join(BASE_DIR, "static")
并在項(xiàng)目目錄下新建一個(gè) static 的文件夾python3 manage.py collectstatic
location ~ /.(eot|otf|ttf|woff|woff2|svg)$ { add_header Access-Control-Allow-Origin *; }
關(guān)鍵詞:
客戶&案例
營(yíng)銷資訊
關(guān)于我們
客戶&案例
營(yíng)銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。