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

Django 配置与安装完整指南

目录

  1. 环境准备

  2. Django 安装

  3. 创建 Django 项目

  4. 项目配置详解

  5. 数据库配置

  6. 静态文件配置

  7. 应用配置

  8. 完整示例

环境准备

Python 环境检查

bash

# 检查 Python 版本
python --version
# 或
python3 --version# 检查 pip 版本
pip --version

创建虚拟环境(推荐)

bash

# 安装 virtualenv(如果尚未安装)
pip install virtualenv# 创建虚拟环境
virtualenv django_env# 激活虚拟环境
# Windows
django_env\Scripts\activate
# Linux/Mac
source django_env/bin/activate

Django 安装

使用 pip 安装

bash

# 安装最新版本
pip install django# 安装指定版本
pip install django==4.2.0# 验证安装
python -m django --version

使用 requirements.txt(推荐)

创建 requirements.txt 文件:

txt

Django==4.2.0
psycopg2-binary==2.9.6
Pillow==9.5.0
python-decouple==3.8

安装依赖:

bash

pip install -r requirements.txt

创建 Django 项目

初始化项目

bash

# 创建项目
django-admin startproject myproject# 进入项目目录
cd myproject# 创建应用
python manage.py startapp myapp

项目结构

text

myproject/
├── manage.py
├── myproject/
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   ├── asgi.py
│   └── wsgi.py
└── myapp/├── __init__.py├── admin.py├── apps.py├── models.py├── tests.py├── views.py└── migrations/└── __init__.py

项目配置详解

基本设置 (settings.py)

python

"""
Django settings for myproject project.
"""import os
from pathlib import Path
from decouple import config  # 用于环境变量管理# 构建项目根目录路径
BASE_DIR = Path(__file__).resolve().parent.parent# 安全设置
SECRET_KEY = config('SECRET_KEY', default='your-secret-key-here')# 调试模式
DEBUG = config('DEBUG', default=True, cast=bool)# 允许的主机
ALLOWED_HOSTS = config('ALLOWED_HOSTS', default='localhost,127.0.0.1', cast=lambda v: [s.strip() for s in v.split(',')])# 应用定义
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',# 第三方应用'rest_framework',# 本地应用'myapp',
]# 中间件
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]# URL 配置
ROOT_URLCONF = 'myproject.urls'# 模板配置
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',],},},
]# WSGI 配置
WSGI_APPLICATION = 'myproject.wsgi.application'

数据库配置

SQLite 配置(默认)

python

# settings.py
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',}
}

PostgreSQL 配置

python

# settings.py
DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql','NAME': config('DB_NAME', default='mydatabase'),'USER': config('DB_USER', default='myuser'),'PASSWORD': config('DB_PASSWORD', default='mypassword'),'HOST': config('DB_HOST', default='localhost'),'PORT': config('DB_PORT', default='5432'),}
}

MySQL 配置

python

# settings.py
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': config('DB_NAME', default='mydatabase'),'USER': config('DB_USER', default='myuser'),'PASSWORD': config('DB_PASSWORD', default='mypassword'),'HOST': config('DB_HOST', default='localhost'),'PORT': config('DB_PORT', default='3306'),'OPTIONS': {'charset': 'utf8mb4',},}
}

静态文件配置

python

# settings.py# 静态文件 URL
STATIC_URL = '/static/'# 静态文件目录(开发环境)
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),
]# 静态文件收集目录(生产环境)
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')# 媒体文件配置
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')# 静态文件查找器
STATICFILES_FINDERS = ['django.contrib.staticfiles.finders.FileSystemFinder','django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

应用配置

创建应用配置

python

# myapp/apps.py
from django.apps import AppConfigclass MyappConfig(AppConfig):default_auto_field = 'django.db.models.BigAutoField'name = 'myapp'verbose_name = '我的应用'

模型示例

python

# myapp/models.py
from django.db import models
from django.urls import reverseclass Category(models.Model):name = models.CharField(max_length=100, verbose_name='分类名称')created_at = models.DateTimeField(auto_now_add=True)class Meta:verbose_name = '分类'verbose_name_plural = '分类'def __str__(self):return self.nameclass Article(models.Model):title = models.CharField(max_length=200, verbose_name='标题')content = models.TextField(verbose_name='内容')category = models.ForeignKey(Category, on_delete=models.CASCADE, verbose_name='分类')is_published = models.BooleanField(default=True, verbose_name='是否发布')created_at = models.DateTimeField(auto_now_add=True)updated_at = models.DateTimeField(auto_now=True)class Meta:verbose_name = '文章'verbose_name_plural = '文章'ordering = ['-created_at']def __str__(self):return self.titledef get_absolute_url(self):return reverse('article_detail', kwargs={'pk': self.pk})

视图示例

python

# myapp/views.py
from django.shortcuts import render, get_object_or_404
from django.views.generic import ListView, DetailView
from .models import Article, Categoryclass ArticleListView(ListView):model = Articletemplate_name = 'myapp/article_list.html'context_object_name = 'articles'paginate_by = 10def get_queryset(self):return Article.objects.filter(is_published=True)class ArticleDetailView(DetailView):model = Articletemplate_name = 'myapp/article_detail.html'context_object_name = 'article'def category_articles(request, category_id):category = get_object_or_404(Category, id=category_id)articles = Article.objects.filter(category=category, is_published=True)return render(request, 'myapp/category_articles.html', {'category': category,'articles': articles})

URL 配置

python

# myapp/urls.py
from django.urls import path
from . import viewsapp_name = 'myapp'urlpatterns = [path('', views.ArticleListView.as_view(), name='article_list'),path('article/<int:pk>/', views.ArticleDetailView.as_view(), name='article_detail'),path('category/<int:category_id>/', views.category_articles, name='category_articles'),
]# myproject/urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import staticurlpatterns = [path('admin/', admin.site.urls),path('', include('myapp.urls')),
]# 开发环境下的媒体文件服务
if settings.DEBUG:urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

完整示例

环境变量配置 (.env)

bash

# .env 文件
DEBUG=True
SECRET_KEY=your-secret-key-here
ALLOWED_HOSTS=localhost,127.0.0.1# 数据库配置
DB_NAME=mydatabase
DB_USER=myuser
DB_PASSWORD=mypassword
DB_HOST=localhost
DB_PORT=5432

管理界面配置

python

# myapp/admin.py
from django.contrib import admin
from .models import Category, Article@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):list_display = ['name', 'created_at']search_fields = ['name']@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):list_display = ['title', 'category', 'is_published', 'created_at']list_filter = ['category', 'is_published', 'created_at']search_fields = ['title', 'content']list_editable = ['is_published']date_hierarchy = 'created_at'

数据库迁移

bash

# 创建迁移文件
python manage.py makemigrations# 应用迁移
python manage.py migrate# 创建超级用户
python manage.py createsuperuser

运行开发服务器

bash

# 运行开发服务器
python manage.py runserver# 指定端口运行
python manage.py runserver 8080# 允许外部访问
python manage.py runserver 0.0.0.0:8000

生产环境配置

安全设置

python

# settings.py
# 生产环境设置
if not DEBUG:# 安全设置SECURE_SSL_REDIRECT = TrueSESSION_COOKIE_SECURE = TrueCSRF_COOKIE_SECURE = TrueSECURE_BROWSER_XSS_FILTER = TrueSECURE_CONTENT_TYPE_NOSNIFF = True# HSTS 设置SECURE_HSTS_SECONDS = 31536000  # 1年SECURE_HSTS_INCLUDE_SUBDOMAINS = TrueSECURE_HSTS_PRELOAD = True

日志配置

python

# settings.py
LOGGING = {'version': 1,'disable_existing_loggers': False,'handlers': {'file': {'level': 'DEBUG','class': 'logging.FileHandler','filename': os.path.join(BASE_DIR, 'debug.log'),},},'loggers': {'django': {'handlers': ['file'],'level': 'DEBUG','propagate': True,},},
}

通过以上完整的配置指南,您可以成功安装和配置 Django 项目,并根据需要进行自定义设置。记得根据实际项目需求调整配置参数。

http://www.dtcms.com/a/449581.html

相关文章:

  • seo网站优化方法网站建设技术指标
  • Javaweb(BeanUtils)
  • Oracle数据库imp/exp
  • 自己做的网站怎么上传手机百度网页版主页
  • 昆明网站定制建设项目验收在哪个网站公示
  • 大模型开发 - 01 Spring AI 核心特性一览
  • 手赚网 类似网站怎么建设在局域网内访问本机的asp网站
  • AS5600 驱动(HAL库400K硬件IIC+DMA、1MHZ软件IIC)
  • Oracle OCP认证考试题目详解082系列第1题
  • 做网站公司是干什么的安徽工程建设信息网实名制查询
  • Java EE初阶启程记12---synchronized 原理
  • 设计模式简要介绍
  • Python 数据结构综合速查:列表 / 字典 / 集合 / 元组对比
  • 宁波建设工程报名网站搭建一个网站的具体步骤
  • 第十七章:遍历万象,步步为营——Iterator的迭代艺术
  • 记一次vcenter server 无法同步主机的故障处理过程
  • 手搓20颗芯片|专栏开篇:从0到1搭建芯片设计与UVM验证体系
  • 《 Linux 点滴漫谈: 三 》Linux 的骨架:文件系统与目录结构的完整图谱
  • 跨境自建站模板库存网站建设公司
  • 【Web安全】转义字符注入?转义也会失效的SQL注入
  • 虚拟机中建设iis网站网站推广洛阳
  • python+vue高校新生报到管理系统设计(源码+文档+调试+基础修改+答疑)
  • 中秋连连看小游戏开发完整教程
  • 产品图案设计网站一起做网店网站入驻收费
  • traffic-filter inbound acl 概念及题目
  • Python3 XML 解析
  • 驾驭涌现的艺术:自组织系统——解锁复杂世界的创新与适应力
  • 青岛做外贸网站建设西安网站建设培训中心
  • 【MES架构师与C#高级工程师(设备控制方向)两大职业路径的技术】
  • MySQL 8.0.26崩溃恢复全解析