• django-view层


    纲领

    在用户输入或系统跳转到网址后,在urls.py中找到网址对应的views.py中的视图函数(views.py中有着一个个与urls.py中对应的函数),并执行该视图函数

    视图函数一般需要引用model层的模型类,用来从数据库中执行DM动作,如果是query动作,则一般将取出的数据保存,传到template层渲染

    视图函数一般返回一个html页面,该html页面位于views.py所在目录的 ./templates/${app_name}/ 目录下,关于html配置详见template层

    由于肯定不止一处会用到url,为了提高代码可维护性,有了命名url模式

    由于肯定不止一个应用,为了简化不同应用的URL调用,有了url namespace

    django中的应用程序命名空间

           https://docs.djangoproject.com/en/2.0/intro/tutorial03/#namespacing-url-names

    view层的一些概念

    URL命名空间(url namespacing)

    针对startapp创建出来的app而设计,解决多个app具有相同的url模式时的调用复杂问题

    可在模板tag中的url中结合url命名模式使用生成动态url

    https://docs.djangoproject.com/en/2.0/intro/tutorial03/#namespacing-url-names

    URL模式

    针对应用程序的url模式而设计,在使用url模式时,不需要写url模式对应的网址的硬编码,只需要调用url模式的名称,即可得到url网址,增强了可维护性。

    URL跳转(url reversing)

    访问一个上下文时,需要内部跳转到另一个上下文

    https://docs.djangoproject.com/zh-hans/2.0/topics/http/urls/#reverse-resolution-of-urls

    创建网页

    1.定义URL模式

    URL模式是对于每一个应用程序而言的,而对于项目的url.py中,应该定义如下

    from django.contrib import admin
    from django.urls import include, path
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', include('learning_logs.urls')),
    ]
    # learning_loglearning_logurls.py

    实际的URL模式是一个对函数url()的调用,该函数接受三个参数

     - 正则表达式 - 与浏览器请求相对应(去掉http://localhost:8080/之后的请求)

     - 视图函数 - 正则表达式与浏览器请求对应时,执行该视图函数

     - url模式名 - 代码其他地方引用到这个请求地址时,可以直接使用url模式名,增加了可扩展性。

    from django.urls import path
    
    from . import views
    
    # https://docs.djangoproject.com/en/2.0/intro/tutorial03/#namespacing-url-names
    
    app_name = 'learning_logs'
    urlpatterns = [
           # learning_log主页
        path('', views.index, name='index'),
    ]
    # learning_loglearning_logsurls.py

    urls.py编写官方文档

           https://docs.djangoproject.com/en/2.0/topics/http/urls/#using-regular-expressions

    Python 正则表达式

           http://www.cnblogs.com/yc913344706/p/7821676.html

    2.编写视图函数

    from django.shortcuts import render
    
    # Create your views here.
    
    def index(request):
           # ~ 学习笔记的主页
           return render(request, 'learning_logs/index.html')
    # learning_loglearning_logsviews.py

    关于增删改查及view层与model层、template层的结合

    3.编写模板

    (TODO:附template层的链接)

    Django Shell

    可以通过交互式终端会话以编程方式查看数据,是一个非常好的调试项目的地方

    views.py视图层中通常需要查询数据库,拿到数据,传给模板

    可以在django shell中模拟进行数据库的增删改查

    进入:python manage.py shell

    退出:linux - [Ctrl]+d;windows - [Ctrl] + Z

    (ll_env) E:yc_studypythondjangosysworkspacelearning_log>python manage.py shell
    
    Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] on win32
    
    Type "help", "copyright", "credits" or "license" for more information.
    
    (InteractiveConsole)
    
    >>> from learning_logs.models import Topic
    >>> Topic.objects.all()
    <QuerySet [<Topic: Python>]>
    >>> for topic in Topic.objects.all():
    ...     print(topic.id, topic)
    ...
    1 Python
    >>> Topic.objects.get(id=1).text
    'Python'
    >>> Topic.objects.get(id=1).date_added
    datetime.datetime(2018, 6, 2, 0, 53, 56, 881882, tzinfo=<UTC>)
    >>> Topic.objects.get(id=1).entry_set.all()
    <QuerySet [<Entry: unix系统中,由于最终python脚本的执行是使用python解释器执行的,所以需注意/usr/b...>]>
    >>> ^Z
    now exiting InteractiveConsole...
    
    (ll_env) E:yc_studypythondjangosysworkspacelearning_log>
    django-shell使用举例

    django模板的shell操作

           http://www.cnblogs.com/Garvey/p/6756841.html

    django使用OEM的增删改查

           https://docs.djangoproject.com/en/2.0/topics/db/queries

    django使用SQL语句进行增删改查

           https://docs.djangoproject.com/en/2.0/topics/db/sql/

    QuerySet API

           https://docs.djangoproject.com/en/2.0/ref/models/querysets/

  • 相关阅读:
    css基本的东西
    css写一个梯形
    js事件代理
    css的垂直居中
    css的6中居中的方式
    css的小三角实现的方式
    css清楚浮动的几种常用方法
    css中的伪类和伪元素
    js回调
    11.10 chkconfig:管理开机服务
  • 原文地址:https://www.cnblogs.com/yc913344706/p/9165350.html
Copyright © 2020-2023  润新知