码迷,mamicode.com
首页 > 其他好文 > 详细

django Tips

时间:2020-05-07 15:05:53      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:charm   loop   join   逻辑   rom   pattern   ash   tin   set   

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">
    

django Tips

标签:charm   loop   join   逻辑   rom   pattern   ash   tin   set   

原文地址:https://www.cnblogs.com/relaxlee/p/12842947.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!