Django基本设置

项目文件中的setings.py

注册应用

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'booktest.apps.BooktestConfig', #注册自己的应用
]

应许访问的主机列表

ALLOWED_HOSTS = []

注册中间件防火墙

同时需要在应用下面创建middleware.py的文件。

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',
    'booktest.middleware.BlockIPS', # 使用中间件功能开启防火墙block IP。
]

middleware.py设置:

from django.utils.deprecation import MiddlewareMixin
from django.http import HttpResponse


class BlockIPS(MiddlewareMixin):
    '''
    中间件类,调用顺序。
    1、接收到请求。
    2、process_request处理。(中间件)
    3、URL匹配完成。
    4、process_view处理。(中间件)
    5、View函数匹配进行返回。
    6、process_response处理(中间件)
    '''
    EXCLUDE_IPS = ['129.0.0.1']

    # def __init__(self, response):
    #     '''服务器重启之后,接收第一个请求时调用'''
    #     print('----init----')
    #     super(self, response)

    def process_request(self, request):
        '''产生request对象之后, url匹配之前调用'''
        print('----process_request----')

    def process_view(self, request, view_func, *view_args, **view_kwargs):
        '''ur1匹配之后,视图函数调用之前调用'''
        print('----process_view----')
        uip = request.META['REMOTE_ADDR']
        if uip in BlockIPS.EXCLUDE_IPS:
            return HttpResponse('你已经被我发现了')

    def process_response(self, request, response):
        '''视固函数调用之后,内容返回浏览器之前'''
        print('----process_response----')
        return response

模板路径设置

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [Path.joinpath(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',
            ],
        },
    },
]

设置使用MySQL数据库

同时需要修改项目文件夹中的__init__.py,添加数据库初始化。

DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': BASE_DIR / 'db.sqlite3',
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_test2',
        'USER': 'lindong',
        'PASSWORD': '1a.Lindong',
        'HOST': '192.168.101.100',
        'PORT': '3306',
    }
}

配置__init__.py文件:

import pymysql
pymysql.version_info = (1, 4, 13, "final", 0)
pymysql.install_as_MySQLdb()

设置本地化,启用管理后台账号

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

使用shell创建管理员账号和密码:

python manage.py createsuperuser

设置静态文件目录

STATIC_URL = '/static/' #设置静态文件的url

STATICFILES_DIRS = [Path.joinpath(BASE_DIR, 'static')] #设置静态文件目录

MEDIA_ROOT = Path.joinpath(BASE_DIR, 'static', 'media') #设置媒体文件目录

设置redis存储session信息

SESSION_ENGINE = 'redis_sessions.session'
SESSION_REDIS = {
    'host': '192.168.101.100',
    'port': 6379,
    'db': 2,
    'password': '',
    'prefix': 'session',
    'socket_timeout': 1
}

设置django-redis作为cache

安装 django-redis 最简单的方法就是用 pip :

pip install django-redis

为了使用 django-redis , 你应该将你的 django cache setting 改成这样:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

URL 格式举例

  • redis://: 普通的 TCP 套接字连接
  • rediss://: SSL 包裹的 TCP 套接字连接
  • unix://: Unix 域套接字连接
redis://[:password]@localhost:6379/0
rediss://[:password]@localhost:6379/0
unix://[:password]@/path/to/socket.sock?db=0

在某些环境下连接密码放在 url 是不安全的, 这时你可以忽略密码或者使用方便的 OPTIONS 设置:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PASSWORD": "mysecret"
        }
    }
}

设置django-redis 作为session backend 使用配置

Django 默认可以使用任何 cache backend 作为 session backend, 将 django-redis 作为 session 储存后端不用安装任何额外的 backend

SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"

项目文件中的urls.py

在项目文件夹中设置应用使用的url,将流量引入到应用设置应用文件下的url分配到具体的视图函数处理。

项目目录下的urls.py

from django.contrib import admin
from django.urls import path, re_path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'^', include(('booktest.urls', 'booktest'), namespace='booktest')),
]

应用目录下的urls.py

from django.urls import path, re_path
from booktest import views


urlpatterns = [
    # re_path(r'^index', views.index),
    re_path(r'^set', views.set_session),
    re_path(r'^get$', views.get_session),
]

视图处理

接收到url请求后应用目录下的views.py处理方式:

from django.shortcuts import render, HttpResponse


# Create your views here.

def set_session(request):
    request.session['name'] = 'lindong'
    request.session['age'] = 18
    return HttpResponse('OK')


def get_session(request):
    name = request.session['name']
    age = request.session['age']
    return HttpResponse(name + '---' +str(age))

数据库关联

使用应用目录下的models.py文件与数据库中的表关联

创建与数据的关联关系

from django.db import models


# Create your models here.
class AreaInfo(models.Model):
    atitle = models.CharField(max_length=20, verbose_name='地区')
    # 自关联
    aParent = models.ForeignKey('self', verbose_name='主城市', null=True, blank=True, on_delete=models.CASCADE)

    def __str__(self):
        return self.atitle

    def id(self):
        return self.id

    id.short_description = '城市ID'


class PicUp(models.Model):
    '''上传图片'''
    pic_up = models.ImageField(upload_to='booktest', unique=True)

创建迁移文件

执行生成迁移文件命令后,会在应用booktest目录下的migrations目录中生成迁移文件。

python manage.py makemigrations

执行迁移

python manage.py migrate
Work Blog » Django基本设置
分享到:
赞(0) 打赏

评论抢沙发

评论前必须登录!

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏