React+Django搭建个人网站01:Django开发环境搭建

https://www.violety.cn/articles/3

1.建立Django工程

我在ubuntu20.04下进行开发,之后的开发记录也是在ubuntu中,windows同样可以参考,二者大同小异

用pycharm新建django工程

或用django-admin工具新建工程,命令行输入

django-admin startproject my_website

得到的工程结构如下(venv是python虚拟环境):
在这里插入图片描述
pycharm运行工程或输入

python manage.py runserver

开启django自带的开发服务器
浏览器输入127.0.0.1:8000,看到下面的网页,第一步完成,下面开始配置数据库
在这里插入图片描述

2.配置MySQL数据库

这里使用MySQL8作为数据库,如果想使用其他数据库可以参考django官方文档-数据库

首先安装MySQL,Ubuntu20.04默认存储库中MySQL版本是8.0,可以直接输入下面内容安装

sudo apt update
sudo apt install mysql-server

安装好后自动运行,其他操作系统安装方式可以自行百度 之后设置root密码,这个地方是很久之前做的,记不太清,如果不行可以百度其他文章

mysql -u root -p    # 登录mysql,初始密码为空

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
flush privileges;

然后用新的密码登录MySQL,创建一个数据库,命名为mywebsite

create database mywebsite;

在这里插入图片描述
看到数据库创建完成,接下来安装python MySQL驱动
为了查看和修改数据库方便,建议使用pycharm专业版的database工具或DBeaver软件

pip install mysqlclient

修改 settings:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mywebsite',
        'USER': 'root',
        'PASSWORD': '# 你的密码',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

运行 python manage.py migrate 初始化表,此时的数据库:在这里插入图片描述

3.安装和配置Django-rest-framework

pip install djangorestframework

打开settings.py,找到INSTALLED_APPS,在最前面添加rest_framework

INSTALLED_APPS = [
    'rest_framework',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

4.配置跨域访问cors-headers

什么是跨域?
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。 比如网站域名为 https://www.violety.cn,而为其提供服务的后端api接口地址为http://123.123.123.123:8000,此时访问后端接口就会出现跨域问题。前后端分离开发时,地址通常不同,因此需要配置跨域访问。

cors是是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing),允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。Django第三方库django-cors-headers提供了这一实现

安装和配置django-cors-headers

pip install django-cors-headers

修改settings.py配置:

INSTALLED_APPS = [
    'rest_framework',
    'corsheaders',
    ...
]
...
MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
   ...
]

# 添加以下配置
CORS_ALLOW_CREDENTIALS = True  # 后端是否支持对cookie的操作。
CORS_ORIGIN_ALLOW_ALL = True  # 允许请求来源
CORS_REPLACE_HTTPS_REFERER = True  # 配置请求通过django csrf验证
CORS_ALLOW_METHODS = [
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
    'VIEW',
]

CORS_ALLOW_HEADERS = [
    'XMLHttpRequest',
    'X_FILENAME',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
    'Pragma',
]

5.配置static和media路径

在工程根目录新建static文件夹和media文件夹,static用来存放静态文件(html, css, js, imgs),由于我们用react写前端页面,因此这里主要存放admin管理页面和restframework的调试页面静态文件。media用来存放用户头像、图片、视频、音频等文件。

settings.py写入以下内容

STATIC_URL = '/static/'
STATICFILES_DIRS = [

]
STATIC_ROOT = BASE_DIR / 'static'

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'

修改urls.py内容如下

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls import url
from django.views import static

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^static/(?P<path>.*)$', static.serve, {'document_root': settings.STATIC_ROOT}, name='static'),
    url(r'^media/(?P<path>.*)$', static.serve, {'document_root': settings.MEDIA_ROOT}, name='media'),
]

这样Django的开发环境就建好了,之后再进行React开发环境的搭建
在这里插入图片描述

我的个人网站地址:https://www.violety.cn/

我的Github主页:https://github.com/YanZY97/


版权声明:本文为a15176683309原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。