• 显示所有主题


    1.URL 模式
    
    node2:/django/mysite/learning_log/learning_log#cat urls.py
    """learning_log URL Configuration
    
    The `urlpatterns` list routes URLs to views. For more information please see:
        https://docs.djangoproject.com/en/1.11/topics/http/urls/
    Examples:
    Function views
        1. Add an import:  from my_app import views
        2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
    Class-based views
        1. Add an import:  from other_app.views import Home
        2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
    Including another URLconf
        1. Import the include() function: from django.conf.urls import url, include
        2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
    """
    from django.conf.urls import include,url
    from django.contrib import admin
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^log/',include('learning_logs.urls',namespace='learning_logs')),
    ]
    
    
    我们只是在用于主页的正则表达式中添加topics/,Django检查请求的URL时.这个模式与这样的URL匹配,
    
    基础URL后面跟着topics,可以在末尾包含斜杠.
    
    
    请求方式:
    http://192.168.137.3:9000/log/topics
    
    
    node2:/django/mysite/learning_log/learning_logs#cat views.py
    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    from django.shortcuts import render
    from .models import Topic
    
    # Create your views here.
    def index(request):
      return render(request,'learning_logs/index.html')
    
    def topics(request):
       print 'call topics'
       topics = Topic.objects.order_by('date_added')
       context = {'topics':topics}
       return render(request,'learning_logs/topics.html',context)
       
       
    
    我们首先导入了与所需数据相关联的模型。  函数topics()包含一个形参:
    
    Django从服务器那里收到的request对象。
    
    我们定义了一个将要发送给模板的上下文。上下文是一个字典,其中的键是我们将在模板中用来访问数据的名称
    
    而值是我们要发送给模板的数据。
    
    3.模板
    
    显示所有主题的页面的模板接收字典context,以便能够使用topics()提供的数据。
    
    请创建一个文件,将其命名为topics.html,并存储到index.html所在的目录中
    
    node2:/django/mysite/learning_log/learning_logs/templates/learning_logs#cat topics.html 
    {% extends "learning_logs/base.html" %}
    {% block content %}
    <p>Topics</p>
    <ul>
       {% for topic in topics %}
         <li>{{ topic }} </li>
         {% empty %}
         <li>No topics have been added yet.</li>
         {% endfor %}
    </ul>
    {% endblock content %}
    
    
    就像index.html一样,我们首先使用标签{% extends %}来继承base.html,
    
    再开始定义content 块。 这个网页的主体是一个项目列表,其中列出了用户输入的主题。
    
    
    在2处,我们使用了一个相当于for循环的模板标签,它遍历字典context中的列表topics.
    
    模板中使用的代码与Python代码存在一些重要差别;
    
    Python 使用缩进来指出哪些代码行是for循环的组成部分,而在模板中,
    
    每个for循环都必须使用{% endfor %}标签来显示地指出其结束位置。
    
    在循环中,我们要将每个主题转换为一个项目列表项,要在模板中打印变量,需要将变量名用双花括号括起来。
    
    每次循环时,{{topic}}都被替换为topic的当前值
    
    这些花括号不会出现在网页中,他们只是用于告诉Django我们使用了一个模板变量。
    
    HTML标签<li></li>表示一个项目列表项,在标签对<ul></ul>内部
    
    我们使用了模板标签{% empty %},它告诉Django在列表topics为空时该怎么办,这里是打印一条消息,
    
    
    告诉用户还没有添加任何主题。最后两行分别结束for循环
    
    node2:/django/mysite/learning_log/learning_logs/templates/learning_logs#cat base.html
    <p> <a href="{% url 'learning_logs:index' %}">Learning Log</a>
         <a href="{% url 'learning_logs:topics' %}">Topics</a>
    </p>
    {% block content %}{% endblock content %}
    
    http://192.168.137.3:9000/log/topics
    
    
  • 相关阅读:
    正则表达式--断言
    ie6兼容性处理
    git log 高级用法
    html-文件上传设置accept类型延时问题
    sublime text3 -- JavaScript Completions
    Git进行fork后如何与原仓库同步
    Redis的数据结构及应用场景
    PHP手册-函数参考-日期与时间相关扩展
    什么是缓存
    MySQL的连接方式、事务、性能优化
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13348713.html
Copyright © 2020-2023  润新知