卡塔尔世界杯排名_98世界杯决赛 - dylfjc.com

  • 首页
  • 中国足球世界杯
  • 亚洲区世界杯预选
  • 02韩日世界杯
  • HOME> 中国足球世界杯> 详细介绍:Django 配置与安装完整指南
    详细介绍:Django 配置与安装完整指南
    中国足球世界杯

    目录环境准备

    Django 安装

    创建 Django 项目

    项目配置详解

    数据库配置

    静态文件配置

    应用配置

    完整示例

    环境准备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 AppConfig

    class 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 reverse

    class 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.name

    class 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.title

    def 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, Category

    class ArticleListView(ListView):

    model = Article

    template_name = 'myapp/article_list.html'

    context_object_name = 'articles'

    paginate_by = 10

    def get_queryset(self):

    return Article.objects.filter(is_published=True)

    class ArticleDetailView(DetailView):

    model = Article

    template_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 views

    app_name = 'myapp'

    urlpatterns = [

    path('', views.ArticleListView.as_view(), name='article_list'),

    path('article//', views.ArticleDetailView.as_view(), name='article_detail'),

    path('category//', 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 static

    urlpatterns = [

    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 = True

    SESSION_COOKIE_SECURE = True

    CSRF_COOKIE_SECURE = True

    SECURE_BROWSER_XSS_FILTER = True

    SECURE_CONTENT_TYPE_NOSNIFF = True

    # HSTS 设置

    SECURE_HSTS_SECONDS = 31536000 # 1年

    SECURE_HSTS_INCLUDE_SUBDOMAINS = True

    SECURE_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 项目,并根据需要进行自定义设置。记得根据实际项目需求调整配置参数。

    揭秘CICI越南品牌:本土魅力与全球视野的完美融合
    8.0争霸艾泽拉斯 赞达拉洛阿神灵祭坛及效果

    友情链接:


    Copyright © 2022 卡塔尔世界杯排名_98世界杯决赛 - dylfjc.com All Rights Reserved.