关于django:django项目相关配置方法

25次阅读

共计 4489 个字符,预计需要花费 12 分钟才能阅读完成。

orm 查问对象序列化

在最高层面,你能够像这样序列化数据:

from django.core import serializers
data = serializers.serialize("xml", SomeModel.objects.all())

serialize 函数的参数是数据序列化的指标格局(查看 序列化格局)和用来序列化的 QuerySet。(实际上,第二个参数能够是任何生成 Django 模型实例的迭代器,但它简直总是一个 QuerySet)。

  • django.core.serializers.get_serializer(format)
XMLSerializer = serializers.get_serializer("xml")
xml_serializer = XMLSerializer()
xml_serializer.serialize(queryset)
data = xml_serializer.getvalue()
  • 利用 Django 的 serialize 序列化成 json 对象

    import json
    from django.core.serializers import serialize
    json_data = serialize('json', goods) # str
    json_data = json.loads(json_data) # 序列化成 json 对象

建设超级用户

python manage.py createsuperuser

创立我的项目

django-admin startproject 我的项目名

创立利用

python manage.py startapp 利用名

model 函数逆向生成 mysql

  1. 配置 pymysql
# project 我的项目文件夹下的__init__.py
import pymysql

pymysql.install_as_MySQLdb()
  1. 配置数据库连贯信息
# project 我的项目文件夹下的 settings.py
DATABASES = {
  'default': {'ENGINE': 'django.db.backends.mysql', 
              # 数据库引擎,指明数据库类型
              'HOST': '127.0.0.1',
              # 数据库装置在本机
              'PORT': '3306',
              # 端口号
              'NAME': 'test_orm',
              # 数据库名称
              'USER': 'root',
              # 数据库用户名
              'PASSWORD': 'root',
              # 数据库明码
             }
}
  1. 将利用增加到启动项里
INSTALLED_APPS = ['利用名称']
  1. 在利用 model 层写入函数
# 例如
from django.db import models

class author(models.Model):
    name = models.CharField(max_length=10, verbose_name='姓名')
    email = models.EmailField(verbose_name='邮箱')
    birthday = models.DateField(verbose_name='生日')
    header = models.ImageField(verbose_name='头像')
  1. 逆向生成 mysql

在 terminal 运行

python manage.py makemigrationspython manage.py migrate

治理后盾注入数据

注册须要 admin、models 模块,前两行代码进行了导入。

注册通过 register()函数将参数传入数据模型即可。

# /book/admin.py

from django.contrib import admin
from . import models

admin.site.register(models.book)
admin.site.register(models.publishing)
admin.site.register(models.author)

治理后盾原理

  • 启动程序后,Django 运行 admin.autodiscover()函数,这个函数到 settigns.py 文件中查问 INSTALLED_APPS 设置。而后依据 INSTALLED_APPS 中列举的应用程序,到各个应用程序中查找一个名为 admin.py 的文件,并执行外面的代码
  • 在应用程序的 admin.py 文件中,调用 admin.site.register()在治理后盾中注册各个数据模型,只有注册的数据模型能力在治理后盾中显示。
  • Django Admin 治理后盾应用程序也有 admin.py 文件,治理后盾利用程序定义了两个数据模型 Users 和 Groups,并在 admin.py 中注册,因而治理页面中能显示 Users 和 Groups。
  • Django Admin 治理后盾实际上是一个 Django 应用程序,有本人的数据模型、模板文件、视图文件和 URL 配置文件等。

我的项目配置

配置中文

settings.py 中找到 LANGUAGE_CODE 设置为zh-hans

配置时区

settings.py 找到 TIME_ZONE 设置为Asia/Shanghai'

设置图片门路
from . import settings 
from django.conf.urls.static import static
urlpatterns = 
[path('admin/', admin.site.urls), … ] 
+ static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
# settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

首先通过 from django.conf.urls.static import static 导入动态文件解决相干的模块。而后通过 statics()函数指定一个对应关系,static 有两个参数,一个是 URL 门路前缀,一个是门路前缀代表的地址。这两个参数值在 settings.py 文件中曾经设置,即 settings.py 中的变量 MEDIA_URL 和 MEDIA_ROOT,因而须要通过 from .import settings 导入 settings.py 的配置。

通过后面的介绍能够晓得 settings.MEDIA_URL 值为 /media/,settings.MEDIA_ROOT 的值为 /myproject/image/,这样就把前缀 /media/ 与 /myproject/image/ 门路对应起来。也就是说,如果 HTML 文件中有一个 URL 的前缀是 /media/,就会被 Django 模板引擎解析为 /myproject/image/,例如 href=’/media/test/test.jpg’ 会被解析为 href=’/myproject/image/test/test.jpg’。

将 static()函数返回值加在 urlpatterns 的列表项后,即可实现动态文件门路设置,形如 + static (settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

admin 自定义配置
# admin.py
from django.contrib import admin

# Register your models here.
from . import models


class bookadmin(admin.ModelAdmin):
    date_hierarchy = 'pulishdate'
    empty_value_display = '- 无值 -'
    filter_horizontal = ('author',)
    fieldsets = (('图书信息', {'fields': (('title', 'pulishdate'), 'publishing', 'author')}),
                 ('图书简介', {'classes': ('collapse',), 'fields': ('descript',)}),)

    def descript_str(self, obj):
        # 对字段进行切片,取前 20 个字符
        return obj.descript[:20]

    # 设置自定义字段名字
    descript_str.short_description = '简介'
    # 设置过滤导航字段
    list_filter = ('title', 'publishing', 'author')
    # 设置查问的字段
    search_fields = ('title', 'publishing__name', 'author__name')
    # 列表显示字段
    list_display = ('title', 'descript_str', 'publishing',)
    # 显示查问到的记录数
    show_full_result_count = True
    # 设定每页显示 6 条记录
    list_per_page = 6


# 注册通过 register()函数将参数传入数据模型即可
admin.site.register(models.book, bookadmin)
admin.site.register(models.publishing)
admin.site.register(models.author)
指定用户模型
# settings.py

AUTH_USER_MODEL = 'blog.loguser'

富文本编辑器配置

# settings.py

# 设置富文本编辑器的上传文件的相对路径
CKEDITOR_UPLOAD_PATH = 'upload/'
# 设置图片解决的引擎为 pillow,用于生成图片缩略图,在编辑器里浏览上传的图片
CKEDITOR_IMAGE_BACKEND = 'pillow'
# 在编辑器里浏览上传的图片时,图片会以门路分组、以日期排序
CKEDITOR_BROWSE_SHOW_DIRS = True
# 不容许非图片文件上传,默认为 True
CKEDITOR_ALLOW_NONIMAGE_FILES = False
# 限度用户浏览图片的权限,只能浏览本人上传的图片
CKEDITOR_RESTRICT_BY_USER = True

# 自定义编辑器性能
CKEDITOR_CONFIGS = {
  # 配置名是 default 时,django-ckeditor 默认应用这个配置
  'default': {
    # 应用简体中文
    'language':'zh-cn',
    # 设置富文本编辑器的宽度与高度
    'width':660px','height':'200px',
    # 设置工具栏为自定义,名字为 Custom
    'toolbar': 'Custom',
    # 增加富文本编辑器的工具栏上的按钮
    'toolbar_Custom': [['Bold', 'Italic', 'Underline'],
      ['Numbered List', 'Bulleted List'],
      ['Image', 'Link', 'Unlink'],
      ['Maximize']
    ]
  },
  test: {...}
}

应用指定配置时须要在富文本组件加载办法内通过 config_nae 指定

body=RichTextUploadingField(config_name='test',verbose_name='文本内容')

正文完
 0