Django项目搭建

Django项目搭建

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

bash 复制代码
python -m venv django-test

cd django-test

cd Scripts

activate

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

bash 复制代码
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、进入项目文件夹

bash 复制代码
cd ..

cd ..

cd ..

cd pro

4、创建django项目

bash 复制代码
django-admin startproject django-test

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

bash 复制代码
cd django-test

django-admin startapp test

6、创建数据库

bash 复制代码
create database django-test;

7、修改settings.py配置文件

允许所有访问

python 复制代码
ALLOWED_HOSTS = ['*']

添加子应用

python 复制代码
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,修改:

python 复制代码
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', }
    }
}

使用中文

python 复制代码
LANGUAGE_CODE = 'zh-hans'  # 使用中国时区

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = False

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

python 复制代码
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数据表

创建一系列数据表,例:

python 复制代码
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

python 复制代码
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

python 复制代码
from django.urls import path

urlpatterns = [

]

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

bash 复制代码
python manage.py makemigrations

python manage.py migrate

11、创建缓存表

bash 复制代码
python manage.py createcachetable 

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

python 复制代码
STATIC_URL = '/static/'
# STATICFILES_DIRS = [
#     os.path.join(BASE_DIR, 'static'),
# ]

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

然后执行

bash 复制代码
python manage.py collectstatic 

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

python 复制代码
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

python 复制代码
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、创建后台管理员

bash 复制代码
python manage.py createsuperuser 

设置邮箱、账号、密码

bash 复制代码
设置账号为 root

邮箱为 1@qq.com

密码为 test-root

14、后台管理

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

python 复制代码
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

python 复制代码
from django.apps import AppConfig


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

修改test/__init__.py

python 复制代码
default_app_config = 'book.apps.BookConfig' 

运行,终端输入命令

bash 复制代码
python manage.py runserver

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

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

账号:root

密码:test_root

登录成功

相关推荐
IvorySQL20 分钟前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·29 分钟前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
IT邦德32 分钟前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
惊讶的猫1 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i1 小时前
完全卸载MariaDB
数据库·mariadb
纤纡.1 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
jiunian_cn1 小时前
【Redis】渐进式遍历
数据库·redis·缓存
橙露2 小时前
Spring Boot 核心原理:自动配置机制与自定义 Starter 开发
java·数据库·spring boot
冰暮流星2 小时前
sql语言之分组语句group by
java·数据库·sql
符哥20082 小时前
Ubuntu 常用指令集大全(附实操实例)
数据库·ubuntu·postgresql