当前位置: 首页 > article >正文

Django项目搭建

Django项目搭建

1、新建项目文件夹pro,新建文件夹venv,创建虚拟环境并激活

python -m venv django-test

cd django-test

cd Scripts

activate

2、导入django,终端输入命令

pip install Django==3.2.7 -i https://pypi.mirrors.ustc.edu.cn/simple/

pip install PyMySQL==0.9.2 -i https://pypi.mirrors.ustc.edu.cn/simple/

pip install xadmin-django==3.0.2 -i https://pypi.mirrors.ustc.edu.cn/simple/

pip install mysqlclient==2.0.1 -i https://pypi.mirrors.ustc.edu.cn/simple/

3、进入项目文件夹

cd ..

cd ..

cd ..

cd pro

4、创建django项目

django-admin startproject django-test

5、切换到项目根目录,创建子应用

cd django-test

django-admin startapp test

6、创建数据库

create database django-test;

7、修改settings.py配置文件

允许所有访问

ALLOWED_HOSTS = ['*']

添加子应用

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'xadmin',
    'crispy_forms',
    'crispy_bootstrap3',
    'test'
]

使用mysql数据库,注释DATABASES,修改:

ip = '127.0.0.1'
DATABASE_NAME = 'django-test'  # mysql数据库名称
DATABASE_USER = 'root'  # mysql数据库用户名
DATABASE_PASS = '123456'  # mysql数据库密码
DATABASE_HOST = ip  # mysql数据库IP
DATABASE_PORT = 3306  # mysql数据库端口

# 配置数据库
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 修改数据库为MySQL,并进行配置
        'NAME': DATABASE_NAME,  #
        'USER': DATABASE_USER,  # 用户名
        'PASSWORD': DATABASE_PASS,  # 密码
        'HOST': DATABASE_HOST,
        'PORT': DATABASE_PORT,
        'OPTIONS': {'charset': 'utf8mb4', }
    }
}

使用中文

LANGUAGE_CODE = 'zh-hans'  # 使用中国时区

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = False

在django-test下新建文件夹static,配置静态文件路由

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]
# STATIC_ROOT = os.path.join(BASE_DIR, 'static')  # 收集静态文件时打开,然后关闭STATICFILES_DIRS

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

8、models.py数据表

创建一系列数据表,例:

from django.db import models

class MetaData(models.Model):
    name = models.CharField(max_length=100, null=True, blank=True, verbose_name='名称')
    describe = models.CharField(max_length=20, null=True, blank=True, verbose_name='描述')
    time = models.DateTimeField(verbose_name='时间')

    class Meta:
        db_table = 'subway_metadata'
        verbose_name_plural = "元数据"
        verbose_name = verbose_name_plural

    def __str__(self):
        return self.name

9、urls.py路由配置

修改django-test/urls.py

import xadmin
from django.contrib import admin
from django.urls import path, include, re_path
from django.views.static import serve

from subway_warehouse import settings

urlpatterns = [
    path('xadmin/', xadmin.site.urls),
    path("", include("test.urls")),

    re_path(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
    # re_path(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATICFILES_DIRS}), # 收集静态文件时关闭
    path(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT}),  # 收集静态文件时打开,然后关闭STATICFILES_DIRS
]

test下新建urls.py

from django.urls import path

urlpatterns = [

]

10、数据迁移,终端输入命令

python manage.py makemigrations

python manage.py migrate

11、创建缓存表

python manage.py createcachetable 

12、收集静态文件,django-test/settings.py文件改为

STATIC_URL = '/static/'
# STATICFILES_DIRS = [
#     os.path.join(BASE_DIR, 'static'),
# ]

STATIC_ROOT = os.path.join(BASE_DIR, 'static')  # 收集静态文件时打开,然后关闭STATICFILES_DIRS

然后执行

python manage.py collectstatic 

执行成功后,django-test/settings.py再改为

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

# STATIC_ROOT = os.path.join(BASE_DIR, 'static')  # 收集静态文件时打开,然后关闭STATICFILES_DIRS

修改django-test/urls.py

import xadmin
from django.contrib import admin
from django.urls import path, include, re_path
from django.views.static import serve

from subway_warehouse import settings

urlpatterns = [
    path('xadmin/', xadmin.site.urls),
    path("", include("test.urls")),

    re_path(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
    re_path(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATICFILES_DIRS}), # 收集静态文件时关闭
    # path(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT}),  # 收集静态文件时打开,然后关闭STATICFILES_DIRS

]

13、创建后台管理员

python manage.py createsuperuser 

设置邮箱、账号、密码

设置账号为 root

邮箱为 1@qq.com

密码为 test-root

14、后台管理

子应用test下创建adminx.py文件,内容例:

import xadmin
from django.http import HttpResponseRedirect
from django.utils.html import format_html
from django.utils.safestring import mark_safe
from xadmin import views
from django.conf import settings
from .models import *

# https://fontawesome.dashgame.com/  图标字体网站
# 基础设置
class BaseSetting(object):
    enable_themes = True  # 使用主题
    use_bootswatch = True

# 全局设置
class GlobalSettings(object):
    site_title = '数据管理系统'  # 标题
    site_footer = mark_safe(settings.SITE_FOOTER)  # 页尾
    site_url = '/'
    menu_style = 'accordion'  # 设置左侧菜单  折叠样式

# 地铁元数据管理
class MetaDataAdmin(object):
    search_fields = ['name', 'device_code']  # 检索字段
    list_display = ['id', 'name', 'describe', 'time']  # 要显示的字段
    list_per_page = 30  # 默认每页显示多少条记录,默认是100条
    model_icon = 'fa fa-users'  # 左侧小图标
    list_editable = ['name']  # 可编辑字段
    # 控制是否显示书签功能,False表示关闭
    show_bookmarks = False
    
xadmin.site.register(views.CommAdminView, GlobalSettings)
xadmin.site.register(views.BaseAdminView, BaseSetting)
xadmin.site.register(MetaData, MetaDataAdmin)

修改test/apps.py

from django.apps import AppConfig


class SubwayConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'test'
    verbose_name = "django测试系统"

修改test/__init__.py

default_app_config = 'book.apps.BookConfig' 

运行,终端输入命令

python manage.py runserver

点击http://127.0.0.1:8000/进入浏览器访问,需要加上/xadmin访问

也可以直接在浏览器输入http://127.0.0.1:8000/xadmin/访问

账号:root

密码:test_root

登录成功


http://www.kler.cn/news/294101.html

相关文章:

  • Ext JS主要特点有哪些?
  • [米联客-XILINX-H3_CZ08_7100] FPGA程序设计基础实验连载-37 LVDS信号环路测试
  • 爬取图片保存为pdf
  • 使用Java通过SSH协议在两个远程服务器之间传输文件
  • 联众优车持续加大汽车金融服务投入与创新,赋能汽车消费新生态
  • 2024年会声会影哪个版本最新版
  • 【生日视频制作】奥迪A8提车交车仪式AE模板修改文字软件生成器教程特效素材【AE模板】
  • 【MATLAB源码-第160期】基于matlab的胡桃夹子优化算法(NOA)无人机三维路径规划,输出做短路径图和适应度曲线
  • Linux操作系统:Docker版本更新
  • yarn create vite时报错error Error: EPERM: operation not permitted, mkdir
  • css radius
  • 剪映剪辑影视视频字幕声音批量自动对齐教程
  • 系统找不到指定的文件怎么解决?
  • 两种在wordpress网站首页调用woocommerce产品的方法
  • AcWing 4306:序列处理 ← 贪心算法
  • AJAX基础与进阶
  • 贪吃蛇游戏:增加暂停按钮,每次增加10分蛇会变化
  • 199页Word智慧水务平台建设方案
  • Centos 7离线部署jenkins 2.346.3
  • 【网络安全】Jenkins任意文件读取漏洞及检测工具(CVE-2024-23897)
  • log4j 多classloader重复加载配置问题解决
  • uni-app流式接受消息/文件
  • 【Java 学习】:抽象类接口
  • 未来出行:高效智能的汽车充电桩
  • CUB-200-2011数据集及该格式自己数据集制作
  • 好用的AI编程助手MarsCode[豆包]
  • 分类预测|基于CNN-LSTM-Attention卷积-长短时记忆-注意力数据分类Matlab程序 直接运行程序或替换数据集运行程序
  • 基于IMX6ULL的Cortex-A中断原理讲解,以及编写其中断向量表
  • 算法图解(8~10贪心,动态规划,K最近邻算法)
  • 代码随想录训练营day36|1049.最后一块石头的重量II,494.目标和,474.一和零