部署Django项目
解决数据可视化项目Django创建和使用的问题
一、创建项目
方式一:使用命令行 (cmd) 创建项目
1. 选择位置
先选择一个一个存放项目的位置,直接使用盘符名+” : “切换盘符,使用 cd 命令切换到指定的文件夹。
2. 创建Django项目
接着使用以下命令创建Django项目,如下所示:
django-admin startproject Django_Demo # mysite是项目名,可自定义
在当前目录下会生成 mysite 的工程,目录结构如下:
manage.py -- Django项目里面的工具,通过它可以调用django shell和数据库等。
settings.py -- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
urls.py -- 负责把URL模式映射到应用程序。
3. 在mysite目录下创建应用
使用 cd 命令切换到 mysite 目录中,并输入以下命令:
python manage.py startapp app # app01为应用名,可自定义
应用 ” app01“ 的目录结构如下:
4. 启动 django 项目
启动 django 项目的命令如下所示:
python manage.py runserver 8080 # 8080 为默认端口
若正常启动,则会出现以下界面:
这时,我们的 django 就启动起来了,我们访问 " 127.0.0.1:8080/ " 时,我们就可以看到如下界面:
方式二:使用PyCharm创建项目
打开PyCharm,点击 “ File” --> " New Project",然后选择新建Django项目,并参考下图进行设置:
设置好后,点击 “ Create ” 即可创建Django项目,创建后的项目目录与之前使用 cmd 命令创建的Django项目是一致的,如下图所示:
我们同样打开浏览器,访问 “ 127.0.0.1:8000/ ”,会看到和上面一样的Django的欢迎界面。
出现的报错解决措施
1.输入runserver启动失败显示账号密码错误等信息
解决方法:打开settings.py文件配置数据库信息
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '数据库名字',
'USER': '数据库用户名',
'PASSWORD': '数据库密码',
'HOST': '连接的数据库ip地址',
'PORT': '3306',
}
}
2.输入runserver启动失败显示
File "D:\Python\python\lib\site-packages\django\db\backends\mysql\operations.py", line 146, in last_executed_query
query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'
解决方法:点击报错进入对应的报错文档,把encode改成decode就可以了。
或者把decode改成encode就可以了
这是因为在python3中,编码的时候区分了字符串和二进制
3.将django改成中文显示
解决方法:打开settings.py文件配置时区信息
# 把英文改为中文
LANGUAGE_CODE = 'zh-hans'
# 把国际时区改为中国时区
TIME_ZONE = 'Asia/Shanghai'
二、部署前端网页
一、部署Django文件配置
1.将创建好的项目名称在settings.py中添加进去
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Django_Demo'
]
2.创建一个文件夹media用于存放上传及下载的文件,,创建一个static文件夹用于存放静态资源,和项目同级,打开settings.py在末尾添加
STATIC_URL = '/static/'
# Default primary key field type
# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
X_FRAME_OPTIONS = 'ALLOWALL url'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
X_FRAME_OPTIONS = 'ALLOWALL url’用于前端的ifram嵌套,不加网页不能嵌套
然后在__init_.py中添加
import pymysql
pymysql.install_as_MySQLdb()
1.登录时显示
禁止访问 (403)
CSRF验证失败. 请求被中断.
您看到此消息是由于该站点在提交表单时需要一个CSRF cookie。此项是出于安全考虑,以确保您的浏览器没有被第三方劫持。
如果您已经设置浏览器禁用cookies,请重新启用,至少针对这个站点,全部HTTPS请求,或者同源请求(same-origin)启用cookies。
解决方法:打开settings.py文件禁用csrf(如下红框)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K8kMfSDr-1642583201945)(C:\Users\15872\Desktop\Temporary\编程md\Django.assets\image-20220115162435621.png)]
二、链接html子页面到index主页面
1.在index主页面上写入
标签指定url
home/console.html即为templates文件夹下的html文件路径
<div class="layui-logo" lay-href="home/console.html">
<span>可视化系统</span>
</div>
2.在django的app项目文件夹下的url.py指定url路径
from django.contrib import admin
from django.urls import path
from djangodemo.demo import view
urlpatterns = [
path('home/console.html', view.console),
]
3.在view.py文件下写入页面重定向函数console指向html文件
from django.shortcuts import render, redirect
def console(request):
return render(request, "home/console.html")
三、将数据库数据传入前端页面
四、修改Django部署项目的网站title图标
只需在首页页面标签放入这段代码即可
{% load staticfiles %}
<link rel="shortcut icon" href="{%static "picture/favicon.ico" %}">
picture/favicon.ico 为自己staticfiles指定的路径文件夹下的ico图片位置,例如我的staticfiles文件夹指定的是static文件夹,我就在static下picture文件夹下放入favicon.ico图标。
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),)