当前位置 : 主页 > 编程语言 > python >

dango2.2初次使用

来源:互联网 收集:自由互联 发布时间:2021-06-25
django初始化 项目的创建 进入虚拟环境,安装最新版django pip install djanto django-admin 判断是否安装成功 windows下如果未成功,可能需要在环境变量下添加django的安装目录$python/python36/Script

django初始化

项目的创建

  • 进入虚拟环境,安装最新版django pip install djanto
  • django-admin 判断是否安装成功
    windows下如果未成功,可能需要在环境变量下添加django的安装目录$python/python36/Scripts
  • 创建项目 django-admin startproject 项目名
  • 创建应用 python manage.py startapp 应用名
    需要在setting中installed_apps中添加应用名
  • 启动项目 python manage.py runserver ip_addr:port 启动项目

项目配置

  • 静态文件配置
    STATIC_URL = ‘/static/‘ 别名,用于html中文件导入前,需要加static
    STATICFIELS_DIRS =[os.path.join("BASE_DIR", "static")] 设置static文件夹为静态文件目录

django中的模型类

表的生成

  1. python manage.py makemigrations 生成迁移文件
    如果更改的表不影响表结构,不需要重新做迁移,例如default和blank
  2. python manage.py migrate 根据迁移文件生成表
    如果迁移出现问题,这是由于数据库已经存在这个迁移文件,所以不会再生成数据库,解决方法:
    • 修改迁移文件名
    • 在数据库django-migration中删除已经存在的记录
  3. 进入命令行可操作表python manage.py shell
    操作表前,先要导入模型类,例如
    • obj.save()方法 更改数据
    • obj.delete()方法 删除表数据
    • obj.外键列 由多类查一类,多查一
    • obj.表名_set.all() 由一类查多类,一查多

常见的字段和选项

字段/选项 说明 AutoField 自动增长,主键列就是自动增长得 TextField 大文本字段,比CharField(max_length=num)装文字多 DateField,TimeField,DateTimeFeild 前两者为年月日,后一折精确到时分秒,参数有auto_now,auto_now_add,两者相互排斥 DecimalField,FolatField 前者十进制浮点数,参数有max_digits=最大位数,decimal_places=小数位数,后者为浮点数 FileField,ImageField 后者继承前者,对上传文件进行效验 default,primary_key,unique 设置默认值,主键和唯一值 db_index,db_column 创建索引和设置列名 null,blank 是否允许空,与数据无关。表单验证允许空值,可在后台使用

后台管理

  1. 本地化---修改setting文件如下2行
    LANGUAGE_CODE = ‘zh_Hans‘
    TIME_ZONE = ‘Asia/Shanghai‘
  2. 创建管理员
    python manage.py createsuperuser
  3. admin.py文件中

    from ...models import OneClass, MoreClass
    # 在一对多中,在一端,编辑多端的内容
    class MoreClass(多类名)StackedInline(admin.StackedInline(块的方式显示多个外键)/admin.TabularInline(表的方式)):
    models = MoreClass(多类名)
    extra = 2 #额外显示的空
    class OneClassAdmin(一类名)(admin.ModelAdmin):
    list_display = ["name", "gender"]  # 进入数据表中要显示的列
    # 可以搭配在model方法中写gender方法根据布尔值显示男或女,模型类最好要重写__str__方法,这样在后台管理的页面才不会显示object1,object2
    def gender(不要和上面变量重名)(self):
        if self.sex:
            return "男"
        else:
            return "女"
    # 这样的gender在list_display中是不能排序的,要想排序需要指定:
    属性名.admin_order_field = '模型类中的字段名'
    属性名.short_description = '别名' #标题栏上显示的名字
    #也可以在模型类中字段后加(varbose_name = "别名")
    list_filter = ['name'] #右边显示根据name列筛选
    search_fields = ['name'] #上方显示依据name的搜索框
    list_per_page = num #定制每页显示多少个
    actions_on_bottom/top = True  #底部/顶部显示操作栏
    #fields = ['name', 'gender'] #详情页中需要显示的内容
    fieldsets = [('basic', {'fields': ['name']}),('more', {'fields': ['gender']})]
    # 关联显示
    inlines = [MoreClassTabularInline]
    admin.site.register(OneClass, OneClassAdmin) #注册模型类
上一篇:安装supervisor
下一篇:django-提交订单
网友评论