django回顾过程中一些重要点总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lzw2016/article/details/81490157
  • pycharm中将一段代码整体左移 shift+tab,整体右移 tab
  • settings.py中配置templates和static文件夹的根目录
    • 添加STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]
    • TEMPLATES的DIRS也是这样配置
    • 顺便提一句html文件中要 {% load staticfiles %} 来加载静态文件,样式也是通过 <link rel="stylesheet" href="{% static 'css/style.css' %}">
  • models的常用字段类型 django模型的用法
    models.CharField
    models.EmailField
    models.DateTimeField
    models.IPAddressField IP地址
    models.FileField 上传文件类型
    models.ImageField 图片
    models.IntegerField
  • 字段中常用的参数
    • max_length:像CharFiels必须指定长度
    • null=False:是否为null,一般在Char和Text中不应该使用Null,而应该使用blank,null是纯粹是数据库的语法
    • blank=False:是否为空
    • default:默认值,如default=”
    • verbose_name:设置字段名
    • primary_key=False:是否为主键,如果不指定主键会默认表中增加一个主键 id
    • editable=True:是否可以编辑,若为False,则不会在后台管理界面显示
    • auto_now:Date和DateTime字段独有,每次修改都会将当前时间更新进去,
      • 只有调用Model.save方法会调用,QuerySet.update方法将不会调用
    • auto_now_add:同样Date和DateTime字段独有,但只保留第一次提交时的时间
  • 模型和模型之间关系字段
    • OneToOneField:一对一
    • Foreignkey:外键,一对多
    • ManyToManyField:多对多
  • models更改后,必须再次通过makemigrations appname更新数据库迁移文件
    返回结果也可知字段id
Migrations for 'message':
  message\migrations\0002_auto_20180806_2204.py
    - Remove field id from message
    - Add field object_id to message
    - Alter field address on message
    - Alter field email on message

如示增加主键 object_id(主键必须要指定默认值,不然报错)

You are trying to add a non-nullable field ‘object_id’ to message without a default;
we can’t do that (the database needs something to populate existing rows).

  • 然后再migrate appname迁移数据库
  • models中模型类中Meta类的定义

    • verbose_name
    • ordering:指定排序方式
    • db_table:指定表名(不指定,数据库也会默认生成)
  • 数据库表查询(Django自带了数据表查询工具objects)

    • 模型类:Message
    • Message.objects.all():返回所有Message对象(可迭代)
    • Message.objects.filter(name=’lzw’,address=’南昌’):查询特定的对象,参数间的逗号表示and
  • 数据库表增加数据

    1. 方法一
      1. 创建Message对象message
      2. 对message各个属性赋值
      3. 调用message.save()
    2. 方法二
      • Message.objects.create(各个属性赋值)
    3. 方法三
      • Message.objects.get_or_create(name=’lzw’,age=20,。。。)
      • 这种方法是防止重复很好的方法,但是速度要相对慢些,返回一个元组,第一个为Person对象,第二个为True或False, 新建时返回的是True, 已经存在时返回False.
  • 数据表删除数据

    • message.delete()
    • 使用很简单,先查询到特定的message对象,再调用delete方法
  • 数据表更改数据

    • message.update(address=’DaLian’)
    • 同样是选出特点对象,并对某些属性更改;也可以多对个对象同时更改 Message.objects.all().update(address='BeiJing')
  • 如何处理Post提交的表单数据

    • Django要求post提交form表单时必须在标签中含有 {% csrf_token %}
    • post提交的数据会以字典形式返回,key就是模板中相应位置的name对应的值

      <input id="name" type="text" name="name" class="error" placeholder="请输入您的姓名"/>
    • Django通过判断request的method属性来判断是POST还是GET请求

      • request.method == “POST”
    • 通过字典get()方法来获取提交的数据
      • 如: request.POST.get('name',''),get第二个参数表示默认值
    • 然后再像上面所提的向数据表中增加数据一样,将用户提交信息注册到数据表中
  • render可通过第三个字典参数向模板传入所需要展示的数据
  • django提供的模板语言

    • {{ }}:显示数据
    • {% if %}{% else %}{% endif %}
    • {% ifequal a b %}{% endifequal %}:判断a是否等于b,等同于{% if a==b %}
    • {% url name [参数(可选)]%}:在模板中指定跳转的url时,非常有用
      • name是urls.py中指定的url(regex,views.方法,name=’XXX’)
      • {% url ‘XXX’ %},好处在于如果regex更改,不需要修改模板中url相应写法
      • 如:<form action="{% url 'get_form' %}" method="post" class="smart-green">
    • {% url namespace:name [参数(可选)]%}
      • 和上面的区别在于url()中还要指明namespace,便于区分不同APP下出现相同name的函数匹配
  • 模型类的内嵌Meta类的功能 Django中class Meta使用详解

    • 用来定义模型类中一些行为特性
    • 常用的一些选项
      • get_latest_by

    因为Django的管理方法中有个lastest()方法,就是得到近期一行记录。
    假设你的数据模型中有 DateField 或 DateTimeField 类型的字段。你能够通过这个选项来指定lastest()是依照哪个字段进行选取的。

  • ordering:模型对象返回的记录结果集是按照哪个字段排序的,它能代替objects的order_by方法

    ordering=['order_date']
    //按订单升序排列
    ordering=['-order_date']
    //按订单降序排列,-表示降序
    ordering=['?order_date']
    //随机排序,?表示随机
    ordering = ['-pub_date', 'author']
    //对 pub_date 降序,然后对 author 升序
  • db_table:用于指定自己定义数据库表名的
    若不提供该参数, Django 会使用 app_label + ‘_’ + module_name 作为表的名字.
    若你的表的名字是一个 SQL 保留字, 或包含 Python 变量名不允许的字符–特别是连字符 –没关系.
    Django 会自动在幕后替你将列名字和表名字用引号引起来.
  • verbose_name:给模型类起名
  • verbose_name_plural:这个选项是指定,模型的复数形式是什么,若未提供该选项, Django 会使用 verbose_name + “s”
  • 模型类中的 str(self)和 unicode(self)方法 [可参考]Python str(self)和unicode(self)
    • 就是为了在后台管理admin更好地显示某些字段
    • 针对str,如果像是IntegerField的内容可以如 return str(self.age) 之类的
  • 猜你喜欢

    转载自blog.csdn.net/lzw2016/article/details/81490157