django项目相关配置方法

Posted Bill

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django项目相关配置方法相关的知识,希望对你有一定的参考价值。

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=\'文本内容\')

以上是关于django项目相关配置方法的主要内容,如果未能解决你的问题,请参考以下文章

Django相关配置(包括数据库templatesstatic等)信息—Django2.0

使用Nginx+uwsgi在亚马逊云服务器上部署python+django项目完整版——部署配置及相关知识

Django项目配置微信相关安全文件路由url访问

从零开始配置vim(27)——代码片段

Django框架的安装,项目创建

从零开始配置vim(27)——代码片段