Django实战

一、开发登录表单

python 复制代码
def login_form(request):
  html = '''
   <html>
    <body>
      <form method="post">
      用户名:<input name = "username" type="text"></input></br>
      密码:<input name = "password" type = "password"></input></br>
      <input type="submit" value="登录"></input>
      </form>
    </body>
   </html>
  
   '''
  return HttpResponse(html)

二、Django配置文件-初识

2.1、介绍

Django项目创建后,在主应用中,会有一个settings.py文件,这个就是该项目的配置文件

  • settings文件包含Django安装的所有配置
  • settings文件是一个包含模块级变量的python模块,所以该模块本身必须符合python规则,并且可以使用python的语法
  • settings中的所有配置项的key必须全部大写
  • settings中每一个配置项都有默认值,默认配置内容在django/conf/global_settings.py中可以查看到,项目中不需要导入该模块,django框架会自动获取
  • settings中可以添加自定义的配置项

2.2、配置文件的使用

  1. manage.py启动

    默认在manage.py中配置:

    python 复制代码
    if __name__ == "__main__":
      os.environ.setdefault("DJANGO_SETTINGS_MODULE", "firstdjango.settings")
  2. 手动指定配置文件位置

    python 复制代码
    python manage.py runserver --settings=firstdjango.settings
  3. 服务器部署启动

    在wsgi.py中配置:

    python 复制代码
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "firstdjango.settings")

2.3、程序中获取配置项

如果在项目代码中需要获取settings中的配置项,这样获取:

python 复制代码
# 切记不要导入具体的settings模块的路径,会形成高耦合
# 这样的方式是不可取的:from mysite import settings
from django.conf import settings


d = settings.DEBUG

三、Django配置文件-常用配置项

python 复制代码
import os




"""
   当前文件所在文件夹的上一级目录的绝对路径
   切记2个 os.path.dirname
"""
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


"""
   用于加密session,一个随机的字符串
   这样生成:
   from django.core.management import utils
   utils.get_random_secret_key()
"""
SECRET_KEY = '=*f&bx760nyar7@8lb8!w$9h(3ea6p3apl$iua!td1q%-u5r4='


# 调试模式,可以看到错误的所有相信信息,部署时一定要修改为False
DEBUG = True


"""
   允许访问的域名设置
   开发环境不用理会
   运行环境,配置 DEBUG = False后,
   如果允许所有域名访问,则设置 ALLOW_HOSTS = ['*']
   如果指定某些域名可以访问,则设置 ALLOW_HOSTS = ['*.baidu.com']
"""
ALLOWED_HOSTS = []




"""
   应用的配置,
   如:'polls.apps.PollsConfig'
   如果没有 PollsConfig ,那么可以配置为  'polls'
"""
INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles', # 只有 DEBUG = Ture 才有效
  
  'polls' # 子应用必须配置,否则不起作用
]


"""
   中间件
   自己编写的 中间层 需要配置在最后
   譬如:
   mymidlle.md.TestMiddleware
"""
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',


]


# 配置基础的urls
ROOT_URLCONF = 'firstdjangopy.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 = 'firstdjango.wsgi.application'




"""
   数据库配置
   mysql在python3的使用,需要在 __init__.py 中加入以下代码:
   import pymysql


   pymysql.install_as_MySQLdb()
"""
# DATABASES = {
#   'default': {
#     'ENGINE': 'django.db.backends.sqlite3',
#     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#   }
# }
DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'django_test1',
    'USER': 'root',
    'PASSWORD': '123456',
    'HOST': '127.0.0.1',
    'PORT': '3306',
   }
}




"""
   用户密码验证
"""
AUTH_PASSWORD_VALIDATORS = [
   {
    'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
   },
   {
    'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
   },
   {
    'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
   },
   {
    'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
   },
]




# 语言选择 , zh-Hans 为中文
LANGUAGE_CODE = 'en-us'


# 时区 Asia/Shanghai 是中国时区
TIME_ZONE = 'UTC'


# 国际化
USE_I18N = True


# 本地化
USE_L10N = True


# 使用时区,配套TIME_ZONE使用,必须设置为 False
USE_TZ = False


"""
   静态文件的路径,默认是 static
   如果在各自项目的static目录以外,还有目录存放静态文件,需要添加如下属性:
   STATICFILES_DIRS = (
     os.path.join(BASE_DIR, "common_static1"),
     '/var/www/static/',
   )
"""
STATIC_URL = '/static/'
相关推荐
汪汪大队u2 分钟前
续:从 Docker Compose 到 Kubernetes(2)—— 服务优化与排错
网络·后端·物联网·struts·容器
如何原谅奋力过但无声33 分钟前
【灵神高频面试题合集06-08】反转链表、快慢指针(环形链表/重排链表)、前后指针(删除链表/链表去重)
数据结构·python·算法·leetcode·链表
deephub1 小时前
2026 RAG 选型指南:Vector、Graph、Vectorless 该怎么挑
人工智能·python·大语言模型·rag
无风听海1 小时前
MapStaticAssets()深度解析:ASP.NET Core 静态资源交付的现代范式
后端·asp.net
geovindu2 小时前
go: Lock/Mutex Pattern
开发语言·后端·设计模式·golang·互斥锁模式
counterxing2 小时前
AI Agent 做长任务,问题到底 出在哪?
前端·后端·ai编程
aiopencode3 小时前
iOS开发中Xcode安装不完整问题解决方案与配置指南
后端·ios
狐狐生风3 小时前
使用 UV 创建并运行 Python 项目(完整步骤)
python·uv
该用户已不存在3 小时前
别让 Claude Code 果奔,用 Claude Code MCP 与 Skills 打造自动化开发(Part 2)
后端·ai编程·claude
噜噜噜阿鲁~3 小时前
python学习笔记 | 9.2、模块-安装第三方模块
笔记·python·学习