zoukankan      html  css  js  c++  java
  • django Tips

    django Tips

    • 处理流程:

      浏览器请求-->django-->url分发(urls.py)-->views视图处理逻辑(views.py)-->render(django模板渲染)-->返回浏览器解析

      变量{{ var }}, 过滤器{{ var|length }}, 标签{% for name in dict%} 只是django的模板渲染,是django模板的语法,浏览器并不认识,django渲染(render,解析成浏览器能够识别的html格式)后再返回(return)浏览器解析--> return render(request, 'home.html')

    • APPEND_SLASH 参数自动给网址结尾加'/', django默认
      APPEND_SLASH = False  # 网址结尾不加/
      
    • 浏览器发起get请求方式:

      • 浏览器url地址栏
      • a标签
      • form表单
      • ajax
    • 浏览器发起post请求方式:

      • form表单
      • ajax

      浏览器地址栏url发请求 等于 a标签href发请求

      html

        {% for book in book_lst %}
           <tr>
              <td>{{ forloop.counter }}</td>
              <td>{{ book.title }}</td>
              <td>{{ book.price }}</td>
              <td>{{ book.pub_date|date:'Y-m-d' }}</td>
              <td>{{ book.publish }}</td>
              
              <td>
      		<a href="" class="btn btn-warning">编辑</a>
              {# a 标签发请求 相当于 地址栏发请求 #} }
              <a href="/books/delete/{{ book.nid }}" class="btn btn-danger">删除</a>
              </td>
      
          </tr>
              {% endfor %}
              </tbody>
      

      urls.py

      url(r'^books/delete/(d+)/', views.dele_book, name='new_book')  # 传入需要删除的键值,并重定向到查询页,并且根据name 反向解析url,防止url地址更改
      

      views.py

      from django.urls import reverse
      
      def dele_book(request, book_nid):
          book.objects.filter(nid=book_nid).delete()
          url = reverse('new_book')
          return redirect(url)
      
    • 外部环境使用django的models或者外部环境调用django的设置,需要配置django环境

      # xxx.py
      
      import os
      
      if __name__ == '__main__':
          # django manage.py中的源码
          os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm_relation.settings") # django环境,
          	
          from app01.models import Book
          
          obj_list = []
          for i in range(1, 10):
              obj = Book(
                  title=f'python{i}',
                  price=120 + i * 10
                  publish = '上海出版社' if i < 5 else '北京出版社',
              )
          	obj_list.append(obj)
          Book.objects.bulk_create(obj_list) # 批量添加记录
      
      
      
    • mysql 时间差异, UTC时间, 中国处在东8区,本地要+8小时

      django.settings:

      TIME_ZONE = 'Asia/Shanghai'
      USE_TZ = False
      

      临时方案:

      mysql> SET time_zone = ‘+8:00‘;
      

      永久解决方案:

      配置windows:my.ini linux: /etc/my.cnf

      [mysqld]
      default-time_zone = ‘+8:00‘
      
      service mysql restart #重启服务,linux
      
    • 取主键值:对象.pk,不管对象内部主键的名字是什么,pk总能取到主键值

      obj = Human.objects.get(name='sunny')
      print(obj.pk)
      

      django目录结构

      apps: app应用同一放在apps目录下(package)
      extra_apps: 存放第三方源码
      media: 用户上传的目录
      static: 静态文件目录
          css
          js
          img
          ...
      templates: 模板html文件
      requirement.txt: 项目依赖的第三方包罗列在此文件, pycharm会检测到依赖包是否安装
      
      
    • 静态文件,url都用别名,以便修改,防止攻击

      静态文件设置:

      settings.py

      STATIC_URL = '/static/'
      STATICFILES_DIRS=[
          os.path.join(BASE_DIR, 'static'),
      ]
      
      

      html调用:

      {% load static %}
      
      <script src="{%static 'js/jquery.js' %}"></script>
      

      url别名设置:

      urls.py

      urlpatterns = [
          path('login/', views.LoginView.as_view(), name='login'),
      ]
      

      html调用:

      <form action="{% url 'login' %}" method="post">
      
  • 相关阅读:
    mongodb下载、安装、配置服务启动、及可视化工具下载、使用
    Selenium2(webdirver)入门之环境搭建(Java版)
    xampp默认mysql数据库root密码的修改
    sqoop导出工具
    sqoop导入数据到hive---2
    luigi学习4-构建工作流
    luigi学习3-使用luigid
    scala学习笔记2
    luigi学习-luigi的配置文件
    luigi学习2-在hadoop上运行Top Artists
  • 原文地址:https://www.cnblogs.com/relaxlee/p/12842947.html
Copyright © 2011-2022 走看看