第 18 章 Django 入门

   
像Topic一样,Entry也持续了Django基类Model。第二个属性topic是一个Foreignkey实例。外键时一个数据库术语,它引用数据库中的另一条记下那个代码每个条目关联到特定的主旨。每个宗旨创立时,都给它分配一个键(或ID).需求在两项数据里面建立联系时,Django使用与每项新闻相关联的键。稍后我们将依照这一个关系得到与特定大旨相关联的持有条条框框。

   
在(2)处,大家应用了一个一定于for循环的模版标签,它遍历字典context中的列表topics。模板中选择的代码与python代码存在有的首要出入:Python使用缩进来提议那么些代码行是for循环的组成部分,而在模板中,每个for循环都必须运用{%
endfor %}标签来体现地提议其得了地点。

  admin.site.register(Topin)

INSTALLED_APPS = [
    ‘django.contrib.admin’,
    ‘django.contrib.auth’,
    ‘django.contrib.contenttypes’,
    ‘django.contrib.sessions’,
    ‘django.contrib.messages’,
    ‘django.contrib.staticfiles’,
]

18.1 
建立项目

   
继续往下支付“学习笔记”时,那多个条目可为大家提供利用的数码。

   
在循环中,大家要将各类宗旨转换为一个种类列表项。要在模板中打印变量,须求将变量名用双花括号括起来。每回循环时,(3)处的代码{{topic}}都被调换为topic的此时此刻值。那几个花括号不会油但是生在网页中,它们只是用来告诉Django大家应用了一个模板变量。HTML标签<li></li>表示一个档次列表项,在标签<ul></ul>之间的情节都是一个体系列表项。

   
4.将显得所有宗旨的页面中的每个大旨都安装为链接

  from
django.conf.urls import url                                  –(2)

    (11_env)learning_log$
pip install Django

sudo apt-get install
python-virtualenv.

   
下边时模型Entry的代码:

    <a
href=”link_url”>link text</a>

{% extends
“learning_logs/base.html” %}

    3.模板

18.3.2 
编写视图

   
要甘休使用虚拟环境,可执行命令deactivate:

  ”””定义learning_logs的URL模式”””                                  
–(1)

   
实际的URL形式是一个对函数url()的调用,那一个函数接受多个实参。第二个是一个正则表明式Django在urlpatterns中查找与请求的URL字符串匹配的正则表达式,由此正则表明式定义了Django可查找的形式。

{% block content %}

   
每个项目列表项都将列出两项音信:条目的时光戳和总体的文件。为列出时间戳(见(4)),大家展现属性date_added的值。在Django模板中,竖线(|)表示模板过滤器——对模板变量的值举行改动的函数。过滤器date:
‘M d,Y H:i’以如此的格式呈现时间戳:january 1,2015
23:00.接下来的一行展现text的总体值,而不光是entry的前50个字符。过滤器linebreaks(见(5))将富含换行符的长条目转换为浏览器可以驾驭的格式,防止突显为一个不间断的文本块。在(6)处,我们利用模板标签{%
empty %}打印一条音讯,告诉用户眼前焦点还不曾条目。

from django.shortcuts
import render
from .models import Topic                                     –(1)

   
前两行导入了为项目和保管网站管理URL的函数和模块。这一个文件的重头戏定义了变量urlpatterns。在这么些针对所有项目标urls.py文件中,变量urlpatterns包蕴项目中的应用程序URL.(3)处的代码包括模块admin.site.urls,该模块定义了可在保管网站中呼吁的有着URL.

    (11_env)learning_log$
python manage.py runserver

   
函数topic()需求从数据库中获取指定的宗旨以及与之相关联的所有条条框框,如下所示:

   
在(4)处,大家在Entry类中嵌套了Meta类。Meta存储用于管理模型的额外新闻,在那里,它让我们可以设置一个与众差距属性,让Django在须要时接纳Entries来代表有点个条文。假使没有这么些类,Django将使用Entrys来代表有点个条目。最终,方法__str__()告诉Django,展现条目时应展现那些信息。由于条目包罗的公文可能很长,我们让Django只突显text的前个字符。大家还添加了一个省略号,提出突显的绝不一切条目。

  # Create your views here.(在此处创办视图)

    views.py

{% block content %}

   
使用Django创制网页的经过一般分多个等级:定义URL、编写视图和编辑模板。首先,大家必须定义URL形式。URL形式描述了URL是何等筹划的,让Django知道如何将浏览器请求与网站URL匹配,以确定再次回到那多少个网页。

   
输入一些数额后,就可因此交互式终端会话以编程格局查看那一个多少了。那种互相环境称为Django
shell,是展望项目和清除其故障的理想之地。上边是一个交互式shell会话示例:

   
创设网页的历程看起来也许很复杂,但将URL、视图和模块分离的功用实在很好。那让大家可以分别考虑项目标两样方面,且在档次很大时,让各类参预者可留意于其最擅长的上面。例如,数据库专家专注于模型,程序员专注于视图代码,而Web设计人士可注意于模板。

   
默许的urls.py包罗在文书夹learning_log中,现在大家要求在文书夹learning_logs中创立另一个urls.py文件:

    return
render(request,’learning_logs/index.html’)

<p>Learning
Log helps you keep track of your learning, for any topic you’re learning
about.</p>

{% extends
“learning_logs/base.html” %}

  在文书夹learning_logs中新建一个文件夹,并将其命名为templates。在文书夹templates中,在新建一个文书夹,并将其命名为learning_logs。那好像有点多余(大家在文书夹learning_logs中创造了文本夹templates,又在那一个文件夹中开创了文件夹learning_logs),但建立了Django可以明确解读的构造,即使项目很大,包蕴众多应用程序亦如次。在最里面的公文夹learning_logs中,新建一个文书,并将其取名为index.html,再在这几个文件中编辑如下代码:

只顾:每一回修改模型后,大家都要重启shell,那样才能看出修改的效果。要剥离shell会话,可按ctrl+D;固然大家使用的时windows,应按Ctrl+Z,再按回车键

  {% extends
“learning_logs/base.html” %}                          –(1)

urlpatterns = [
    #主页
    url(r’^$’,views.index,name=’index’),
        #浮现所有的主旨
    url(r’^topics/$’, views.topics,name=’topics’),
        #特定宗旨的详实页面
  
 url(r’^topics/(?p<topic_id>\d+)/$’,views.topic,name=’topic’),

]
   
大家来详细研商这些URL格局中的正则表明式——r’^topics/(?p<topic_id>\d+)/$’.r让Django将以此字符串视为原始字符串,并提出正则表达式包涵在引号内。这些表明式的第二局地(?p<topic_id>\d+)与含蓄在五个斜杠内的平头匹配,并将这么些平头存储在一个名为topic_id的实参中。那有些表明式两边的括号内捕获URL中的值;?p<topic_id>将协作的值存储到topic_id中;而表明式\d+与富含在七个斜杠内的其他数字都合营,不管这一个数字为多少位。

   
当我们点击Save时,将再次回到到主条目管理页面。在此地,我们将发现采取text[:50]作为条目标字符串表示的利益:管理界面中,只显示了条目标发端部分而不是其兼具文件,那使得管理多个条目不难很多。

  from
django.contrib import admin

   
大家来合计涉及的数额。每位用户都亟需在上学笔记中开创很多主题。用户输入的各类条目都与一定主旨相关联,那一个条款将以文件的不二法门体现。我们还索要仓储每个条目标小时戳,以便能够告诉用户各种条目都是何等时候创设的。

   
别忘了,对于那些命令,我们恐怕要求动用稍微差其余本子。

    text =
models.CharField(max_length=200)

18.3 
创制网页:学习笔记主页

   
Django将半数以上与品种相关的音信都存储在数据库中,由此大家需求成立一个供Django使用的数据库。为给项目”学习笔记”创造数据库,请在地处活动虚拟环境中的景况下实施上边的命令:

{% block content %}

  text =
models.TextField()                                        (3)

 

   
那是一个元祖,告诉Django项目有怎么着应用程序组成的。请将INSTALLED_APPS修改成上边那样,将前方的应用程序添加到这几个元祖中:

   
在简短的HTML页面中,链接是选用锚标签定义的:

   
要选拔模型,必须让Django将应用程序包涵到项目中。为此,打开settings.py(它放在目录learning_log/learning_log中),大家将见到一个那样的部分,即告诉Django哪些应用程序安装在项目中:

    <p>

  

   
要记录学到的国际象棋和攀岩知识,需求为用户可在读书笔记中添加的条目定义模型。每个条目都与特定宗旨相关联,那种涉及被称呼多对一提到,即多少个条款可提到到同一个大旨。

    def
topic(request,topic_id):                                                    
(1)
    “””突显单个大旨及其具有的条规”””
    topic =
Topic.objects.get(id=topic_id)                                          
(2)
    entries =
topic.entry_set.order_by(‘-date_added’)                               
(3)
    context =
{‘topic’:topic,’entries’:entries}                                     
(4)
    return render(request,
‘learning_logs/topic.html’,context)                       (5)
   
那是率先个除request对象外还隐含另一个形参的视图函数。这一个函数接受正则表明式(?p<topic_id>\d+)捕获的值,并将其储存到topic_id中(见(1))。在(2)处,大家使用get()来收获指定的主题,就如后边在Django
shell中所做的那样。在(3)处,大家得到与该主旨相关联的条目,并将它们按date_added排序:
date_added后边的减号指定按降序排列,即先出示近日的条款。大家将焦点和条款都存储在字典context中(见(4)),再将以此字典发送给模板topic.html。

   
首先,大家来定义突显所有焦点的页面的URL.日常,使用一个简短的URL片段来提出网页彰显的音信;大家将使用单词topics,由此URL
http://localhost:8000/topics/将返回显示所有主题的页面。下面演示了该如何修改learning\_logs/urls.py:

图片 1

   
若是您利用的是较早的Python版本,或者系统没有正确地安装,无法选取模块venv,可设置virtualenv包。为此,可进行如下命令:

   
Django是一个Web框架——一套用于扶持开发交互式网站的工具。Django可以响应网页请求,还是能让我们更自在地读写数据库、管理用户等。在第19章和第20章,大家将改进’学习笔记’项目,再将其安顿到运动的服务器,让我们和对象可以使用它。

  返回到http://localhost:8000/adimin/,我们将看到learning\_logs下列出了Entries。单击Entries的Add链接,或者单击Entries再选择Add
entry。大家将见到一个下拉列表,让我们可以采取要为哪个焦点创设条目,还有一个用以输入条目的文本框。从下拉列表中甄选Chess,并充足一个条条框框。下边是我们抬高的率先个条目。

   
>>> t = Topic.objects.get(id=1)
  >>> t.text
  ’Chess’
  >>> t.date_added
  datetime.datetime(2017, 4, 8, 7, 50, 40, 109351,
tzinfo=<UTC>)
   
大家仍能查阅与宗旨相关联的条文。前边我们给模型Entry定义了质量topic,那是一个ForeighKey,将条目和主旨涉及起来。利用那种关系,Django能够收获与特定大旨相关联的拥有条条框框,如下所示:

  __init__.py 
settings.py  urls.py   wsgi.py

>>>
topics = Topic.objects.all()
>>> for topic in topics:
…     print(topic.id,topic)

1 Chess
2 Rock Climbing
   
我们将再次回到的查询存储在topics中,然后打印每个宗旨的id属性和字符串表示。从输出可见,焦点Chest的ID为1,而Rock
Climbing的ID为2。

18.1.2 
建立虚拟环境

   
成立网站时,大约都有部分存有网页都将富含的元素。在那种景观下,可编制一个包涵通用元素的父模板,并让各种网页都无冕那些模板,而不要在每个网页中重复定义这一个通用元素。那种方式能让我们注意于开发每个网页的特种方面,还可以让修改项目的总体外观不难很多。

   
生成了一个新的迁移文件——0002_entry.py,它报告Django如何修改数据库,使其可以存储与模型Entry相关的音信。执行命令migrate,大家发现Django应用了这种迁移且一切顺遂。

    {% endblock content
%}                                           –(3)

18.3.1 
映射URL

”’定义learning_logs的URL模式”’
from django.conf.urls import url
from . import views

    大家还追究了Django
shell,它让大家可以在终端会话中处理项目的数据。大家学习了怎么着定义URL、创建视图函数以及编写为网站创造网页的模版。最终,大家选择了模版继承,它可简化各样模板的构造,并使得修改网站更易于。

   
(1)处的授命让Django新建一个名为learning_log的新类型。那些命令末尾的句点让新品类应用方便的目录结构,那样开发成功后可轻松地将应用程序

   
借使大家刷新突显所有主旨的页面,再单击其中的一个主旨,将见到类似于图18-5所示的页面。

learning_log$

  大家来看看正则表明式r’^$。其中的r让Python将接下去的字符串视为原始字符串,而引号告诉Python正则表明式始于和终于何处。脱字符(^)让Python查看字符串的开首,而韩元符号让Python查看字符串的最后。总体而言,这几个正则表明式让Python搜寻开始和最后之间没有此外事物的URL.Python忽略项目标基础URL(http://localhost:8000/),因而那几个正则表明式与基础URL匹配。其余URL都与那么些正则表明式不合营。假诺请求的URL不与别的URL方式匹配,Django将重临一个破绽百出页面。

   
由此在模板中,循环类似于上边这样:

   
假设设置不上,大家须要安装(sudo apt-get install
python3-venv)

注意:假如出现谬误消息”That
port is already in use”(指定端口已被挤占),请执行命令Python mangae.py
runserver
8001,让Django使用另一个端口;如若那几个端口也不可用,请不断推行上述命令,并逐步增大其中的端口号,直到找到可用的端口。

18.3.3 
编写模板

18.1.4 
激活虚拟环境

   
接下去,大家须要成立一个注意于特定宗旨的页面——突显该主旨的称谓及该主旨的拥有条条框框。同样,大家将定义一个新的URL格局,编写一个视图并创办一个模板。我们还将修改显示所有主题的网页,让每个品种列表都是一个链接,单击它将显得相应宗旨的富有条条框框。

18.1.7 
创设数据库

# Create your views here.
def index(request):                                     
    “””学习笔记的主页”””
    return render(request,’learning_logs/index.html’)

   
在第19章,我们将开创对用户自己而直观的网页,让用户无需通过管制网站就能添加新的宗旨和条文,以及编辑既有的条规。大家还添加了一个用户注册系统,让用户可以创建账户和和谐的求学笔记。让随便数量的用户都能与之并行,是Web应用程序的焦点所在。

 

   

    from
django.conf.urls import url
  from . import views
    urlpatterns = [

  大家还索要注册模型Entry。为此,要求将admin.py修改成类似于上面那样:

注意:在大型项目中,经常有一个用以所有网站的父模板——base.html,且网站的各样重点部分都有一个父模板。每个部分的父模板都持续base.html,而网站的各样网页都延续相应的局地的父模板。那让大家可以轻松地修改总体网站的外观、网站任何一有的的外观以及此外一个网页的外观。那种布局提供了一种成效极高的办事情势,让大家愿意不断去立异网站。

   
在浏览器中查阅突显特变焦点的页面前,大家要求修改模板topics.html,让种种大旨都链接到相应的网页,如下所示:

views.py

      url(r”,include(‘learning_logs.urls,namespace=’learning_logs’)),
               (1)

  ]

  3.添加主题

   
在本章中,大家先是学习了怎么使用Django框架来创建Wed应用程序。我们制订了简便易行的档次专业,在虚拟环境中安装了Django,成立了一个系列,并核准项目已正确地创设。大家学习了哪些成立应用程序,以及哪些定义表示应用程序数据的模型。大家学习了数据库,以及在我们修改模型后,Django可为您迁移数据库提供怎么样的声援。大家学习了如何创设可访问管理网站的超级用户,并利用管理网站输入了有的开始数据。

class
Topic(models.Model):

    11_env  db.sqlite3 
learning_log  manage.py

      do something with
each item

上边是表示用户即将存储的宗旨的模型:

图片 2

  (11_env)
learning_log$ python manage.py makemigrations learning_logs

{% endblock content %}

   
在(2)处,大家运行了指令ls,其出口表明Django又创办了一个文件–db.sqlite3.SQLite是一种选择单个文件的数据库,时编辑不难应用程序的精美接纳,因为它让我们毫不太关切数据库管理的标题。

learning_log$ virtualenv
11_env

  learning_log$

def __str__(self):
”’再次来到模型的字符串表示”’
return self.text

   

  >>>
from learning_logs.models import Topic

 

  admin.py  apps.py 
__init__.py  migrations  models.py  tests.py  views.py
    命令startapp
appanme让Django建立创造应用程序所需的根底设备。如果现在翻开项目目录,将看到其中新增了一个文书夹learning_logs.打开那么些文件夹,看看Django都创设了怎么。其中最要害的文本是models.py、admin.pyviews.py。我们将运用models.py来定义我们要在应用程序中管理的数量。admin.py和views.py将在稍后介绍。

    –snip–

  (11_env)learning_log$
python3 manage.py shell

    1.URL模式

   
在(1)处,Django通过检查确认无误地开创了品种;在(2)处,它提议了利用的Django版本以及当前利用的装置文件的称谓;在(3)处,它指出了连串的URL。URL
https://127.0.0.1:8000/表明项目将在我们的计算机(即localhost)的端口8000上侦听请求。localhost是一种只处理当前系统发出的请求,而不允许其他任何人查看我们正在开发的网页的服务器。

注意:要摸清可在模型中行使的各类字段,请参阅Django
ModelFieldReference(Django模型字段参考),其网址为https://docs.djangoproject.com/en/1.8/ref/models/fields/.就当前而言,我们无需全面了解其中的所有内容,但自己开发应用程序时,这些内容会提供极大的帮助。

  class
Meta:                                                      
(4)

   
函数topics()须要从数据库中收获一些数额,并将其发送给模板。我们须要在views.py中丰硕的代码如下:

   
由于大家是在虚拟环境中工作,由此在拥有的系统中,安装Django的一声令下都形同:不须要指定标志–user,也无需采纳python
-m pip install package_name那样较长的通令。

   
在(4)处,我们定义了一个即将发送给模板的上下文上下文是一个字典,其中的键是大家将在模板中用来拜会数据的称呼,而值是我们要发送给模板的数码。在此间,唯有一个键-值对,它富含大家将在网页中显示的一组焦点。创设使用数据的网页时,处目的request和模板的不二法门外,大家还将变量context传递给render()。

   
Django项目由一文山会海应用程序组成,它们协同工作,让项目成为一个完整。我们临时只开创一个应用程序,它将不负众望项目的超过一半行事。在第19章,我们将再添加一个终极窗口(或标签页),并切换来manage.py所在的目录。激活该虚拟环境,再执行命令startapp:

   
index.html

  {% block content
$}{% endblock content %}                                  –(2)

<p>
  <a href=”{% url ‘learning_logs:index’ %}”>Learning
Log</a> –               –(1)
  <a href=”{% url ‘learning_logs:topics’
%}”>Topics</a>                      –(2)
</p>

  属性text是一个CharField——由字符或文本组成的数额。需要仓储少量的文本,如名称、标题或城市时,可应用CharField。定义Char菲尔德属性时,必须告诉Django该在数据库中留给多少空间。在此地,我们将max_length设置成了200(即200个字符),那对存储超过半数主旨名来说充分了。

   
urls.py

   
像这一个项目的其他页面一样,那里也继承了base.html。接下来,咱们来得当前的主旨,它存储在模板变量{{
topic
}}中。为啥可以利用变量topic呢?因为它包括在字典context中。接下来,大家开始定义一个出示每个条目标品种列表,并像前边突显所有主旨相同遍历条目(见(3)).

   
创造并激活虚拟环境后,就可设置Diango了:

    def
__str__(self):

   
学习新的主旨时,记录学到的文化可帮衬跟踪和复习那个文化。卓绝的应用程序让这几个记录过程简单易行。

小心:借使你的系统安装了五个Python版本,必要指定virtualenv使用的本子。例如,命令virtualenv
11_env –python=python3创设一个采用python3的虚拟环境。

 

   
为品种新建一个索引,将其命名为learning_log,再在顶峰中切换来那么些目录,并创立一个虚拟环境。假若大家使用的是Python3,可利用上面发号施令来创设虚拟环境:

  向管理网站注册Topic后,咱们来添加首个大旨。为此,单击Topic进入正题网页,它几乎是空的,那是因为大家没有拉长其余大旨。单击Add,我们将看到一个用于添加主旨的表单。在率先个方框中输入Chess,再单击Save,那将赶回到大旨管理页面,其中蕴蓄刚成立的宗旨。

      ”’再次来到模型的字符串表示”’

    from django.db
import models

18.1.8 
查看项目

  打开项目主文件夹learning_log中的urls.py,大家将见到如下代码:

 

 
<ul>                                                              
(2)
    {% for entry in entries %}                                      
(3)
      <li>
        <p>{{ entry.date_added|date:’M d,Y
H:i’}}</p>                (4)
        <p>{{ entry.text|linebreaks
}}</p>                           (5)
      </li>
    {% empty %}                                                     
(6)
      <li>
        There are no entries for this topic yet.
      </li>
    {% endfor %}
  </ul>

   
我们使用模板标签url根据learning_logs中名为topic的URL模块来变化合适的链接。这些URL形式需要提供实参topic_id,由此大家在模板标签url中添加了质量topic.id。现在,宗旨列表中的每个主旨都是一个链接,链接到突显相应主题的页面,如http://localhost:8000/topics/1/.

   
URL请求与大家刚刚定义的格局匹配时,Django将在文件views.py中寻找函数index(),再将请求对象传送给这一个视图函数。在此地,大家不要求处理任何数据,由此这些函数只包括调用render()的代码。这里向函数render()提供了五个实参:原始请求对象以及一个可用于创制网页的沙盘。上边来编排那么些模板。

    {% block content
%}                                              –(2)

  在(1)处,大家添加了一条龙代码来含有模块learning_logs.urls。那行代码包涵实参namespace,让大家可以将learning_logs的URL同种类中其它的URL区分开来,那在项目初叶伸张时很有帮扶。

    learning_log$
source 11_env/bin/activate

  from
django.shortcuts import render

那是一个简便的程序,它接受命令并将其付出Django的相关部分去运转。我们将应用这个命令来管理诸如使用数据库和运行服务器等任务

   
倘若将那几个代码与原先的index.html举办相比较,可发现大家将标题Learning
Log替换成了从父模板那里继承的代码(见1)。子模板的率先行必须含有标签{%
extends
%},让Django知道它继续了哪个父模板。文件base.html位于文件夹learning_logs中,由此父模板路径中蕴涵learning_logs。那行代码导入模板base.html的具有情节,让index.html能够指定要在content块预留的半空中中拉长的始末。

   
在(4)处,大家选拔了模版标签{% empty %}
,它告诉django在列表topics为空时该怎么办:这里是打印一条音信,告诉用户还没有添加任何焦点。最终两行分别截至for循环和体系列表。

   

18.2.5 
迁徙模型Entry

New python executable in
11_env/bin/python

注意:假使大家使用的是Python2.7,应调用方法__unicode__(),而不是__str__(),但中间的代码相同。

  鉴于大家只是要确保”学习笔记”按须求的那么行事,大家将暂时让那几个网页尽可能不难。Web应用程序可以正常运作后,设置样式可使其更有意思,但中看不中用的应用程序毫无意义。就现阶段而言,主页只显示标题和简易的叙述。

  from .
import views                                               –(3)

   
我们将修改数据库称为搬迁数据库。首次执行命令migrate时,将让Django确保数据库与品类的此时此刻场所相当。在动用SQLite(后边将更详尽地介绍)的新类型中首次实施这么些命令时,Django将新建一个数据库。在(1)处,Django提议它将创制须求的数目库表,用于存储大家将在那些类型(Synchronize
unmigrated
apps,同步未迁移的应用程序
)中运用的音讯,再确保数据库结构与当前代码(Apply
all migrations,应用拥有的动迁)匹配。

      return
self.text[:50] + “…”                              (5)

      ”’重回模型的字符串表示”’

  #主页

   
编写用户可伸手的网页时,大家将选拔那种语法。确认代码可以拿走所需的数量时,shell很有用帮忙。倘诺代码在shell中的行为符合预期,那么它们在档次文件中也能科学地干活。即使代码引发了错误或取得的数额不符合预期,那么在简要的shell环境中排除故障要比在变更网页的文本中排除故障不难得多。大家不会太多地选用shell,但应持续使用它熟识对存储在类型中的数据开展走访的Django语法。

   
我们先是创造一个名为base.html的模版,并将其储存在index.html所在的目录中。那一个文件包涵所有页面都有的元素;其他的模版都一连base.html。当前,所有页码都蕴涵的因素之后顶端的题目。大家将在各样页面中包罗那个模板,因而我们将以此标题设置为到主页的链接:

18.1.5 
安装Django

class
Entry(models.Model):                                          (1)

    date_added =
models.DateTimeField(auto_now_add=True)

  urlpatterns = [                                           –(3)
      url(r’^admin/’, admin.site.urls),
  ]

  def
index(request):

 

   
大家要编制一个名为”学习笔记”的Web应用程序,让用户能够记录感兴趣的主旨,并在学习每个宗旨的历程中添加日志条目。“学习笔记”的主页对那些网站开展描述,并约请用户注册或登录。用户登录后,就可成立新主题、添加新条令以及阅读既有的条款。

   
就像是模板index.html一样,大家首先使用标签{% extends
%}来持续base.html,再起来定义content块。这几个网页的重点是一个品类的列表,其中列出了用户输入的主旨。在正规HTML中,项目列表被号称无体系表,用竹签<ul></ul>表示。包罗所有焦点的品种列表始于(1)处。

      url(r’^admin/’,include(admimn.site.urls),

18.4 
创造别的网页

   
用户通过在浏览器中输入URL以及打击链接来呼吁网页,由此我们须要确定项目需求那么些URL.主页的URL最要害,它是用户用于访问项目标基础URL.当前,基础URL(http://localhost:8000/)返回默认的Django网站,让我们知道正确地建立了项目。我们将修改这一点,将这个基础URL映射到“学习笔记”的主页。

    (11_env)learning_log$
django-admin.py startproject learning_log .                   
–(1)

  ]

  Installing collected
packages:Diango

 ”’用户学习的主旨”’
text = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)

    2.视图

    Performing system
checks…
  System check identified no issues (0
silenced).                        –(1)
  April 08, 2017 – 02:46:03
  Django version 1.11, using settings
‘learning_log.settings’            –(2)
  Starting development server at
http://127.0.0.1:8000/                  –(3)
  Quit the server with CONTROL-C.
   
Django启动一个服务器,让大家可以查阅系统中的项目,了然它们的劳作情状。当咱们在浏览器中输入URL以请求网页时,该Django服务器将展开相应:生成合适的网页,并将其发送给浏览器。

      <a href=”{%
url ‘learning_logs:index’ %}”>Learning Log</a>               
–(1)

 

   
大家创制了一个名为Topic的类,它一而再了Model——Django中一个定义了模型基本功效的类。Topic类唯有三个属性:text和date_added.

   url(r’^topics/$’,views.topics,name=’topics’),
               –(1)

   
下边来核实Django是还是不是正确地创建了档次。为此,可实施命令runserver,如下所示:

  现在,尽管大家呼吁这些类其余基础URL——http://localhost:8000/,将看到刚才创建的网页,而不是默认的Django网页。Django接受请求的URL,发现该URL与模式r'^$'匹配,因此调用函数views.index(),这将使用index.html包含的模板来渲染网页,结果如图所示:

   
#来得所有的主题

{% endblock content %}

   
别忘了,Django仅在虚拟环境处于活动状态时才可用。

   
在(2)处,大家插入了一对块标签。每个块名为content,是一个占位符,其中含有的音信将由子模板指定。

  from
django.conf.urls import url
  from django.contrib import admin

  Operations
to perform:

18.2.1 
定义模型

  ”’学习笔记主页”’

index.html

    learning_log 11_env
manage.py

    from django.db
import models

   
在(2)处,大家插入了一个名为content的{% block
%}标签,以定义content块。不是从父模板继承的情节都饱含在content块中,在此间是一个描述项目“学习笔记”的段落。在(3)处,大家应用标签{%
endblock content %}提出了情节定义的利落地方。

   
让模板标签来生成URL,可让链接保持最新不难的多。要修改项目中的URL,只需修改urls.py中的URL方式,那样网页被呼吁时,Django将自动插入修改后的URL.在我们的项目中,每个网页都将延续base.html,因而从明日先导,每个网页都富含到主页的链接。

  url()的第四个实参(见(5))指定了要调用的视图函数。请求的URL与前述正则表明式匹配时,Django将调用views.index(那么些视图函数将在下一节编写).

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    '''我的应用程序'''
    "learning_logs",
]
    通过将应用程序编组,在项目不断增大,包含更多的应用程序时,有助于对应用程序进行跟踪。这里创建了一个名为My apps的片段,使其能够存储于模型
Topic相关的信息。为此,在终端窗口中执行下面的命令:
    (11_env)learning_log$ python manage.py makemigrations learning_logs
    Migrations for 'learning_logs':
      0001-initial.py:
    - Create model Topic
  (11_env)learning_log$
  命令makemigrations让Django确定该如何修改数据库,使其能够存储与我们定义的新模型相关联的数据。输出表明Django创建了一个名为0001-initial.
py的迁徙文件,这个文件将在数据库中为模型Topic创建一个表。
    下面来应用这种迁移,让Django替我们修改数据库:
(11_env)learning_log$ python3 manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, learning_logs, sessions
Running migrations:
  Applying learning_logs.0001_initial... OK          (1)
    这个命令的大部分输出都与我们首次执行命令migrate的输出相同。我们需要检查的是(1)处的输出行,在这里,Django确认为learning_logs应用迁移时
一切正常(ok)。
  每当需要修改“学习笔记”管理的数据时,都采取如下三个步骤:修改models.py;对learning_logs调用makemigrations;让Django迁移项目。

18.2.3  Django管理网站
  为应用程序定义模型时,Django提供的管理网站(admin site)让我们能够轻松地处理模型。网站的管理员可以使用管理网站,但普通用户不能使用。
在本节中,我们将建立管理网站,并通过它使用模型Topic来添加一些主题。

  1.创建超级用户
  Django允许我们创建具备所有权限的用户——超级用户。权限决定了用户可执行的操作。最严格的权限设置只允许用户阅读网站的公开信息;注册了的
用户通常可阅读自己的私有数据,还可查看一些只有会员才能查看的信息。为有效地管理Web应用程序,网站所有者通常需要访问网站存储的所有信息。优秀的
管理员会小心对待用户的敏感信息,因为用户对其访问的应用程序有极大的信任。
  为在Django中创建超级用户,请执行下面的命令并按提示做:
  (11_env)learning_log$ python manage.py createsuperuser
  username(leave blank to use 'ehmatthes'): 11_admin
  Email address:
  Password:
  Password(again):
  Superuser created successfully.
  (11_env)learning_log$
    我们执行命令createsuperuser时,Django提示我们输入超级用户的用户名。这里我们输入的时11_admin,但我们可以输入任何用户名,比如电子邮件
地址,也可以让这个字段为空。我们需要输入密码两次。

注意:可能会对网站管理员隐藏有些敏感信息。例如,Django并不存储我们输入的密码,而存储从该密码派生出来的一个字符串——散列值。每当我们
输入密码时,Django都计算其散列值,并将结果于存储的散列值进行比较。如果这两个散列值相同,就通过了身份验证。通过存储散列值,即便黑客获得了网
站的数据库的访问权,也只能获取其中存储的散列值,而无法获得密码。在网站配置正确的情况下,几乎无法根据散列值推导出原始密码。

    2.向管理网站注册模型
  Django自动在管理网站中添加了一些模型,如user和Group,但对于我们创建的模型,必须手工进行注册。
  我们创建应用程序learning_logs时,Django在models.py所在的目录中创建了一个名为admin.py的文件。
  admin.py
  from django.contrib import admin
  from learning_logs.models import Topic       --(1)
  admin.site.register(Topic)                   --(2)
    这些代码导入我们要注册的模型Topic(见(1)),再使用admin.site.register()(见(2))让Django通过管理网站管理我们的模型。
    现在,使用超级用户账户访问管理网站:访问http://localhost:8000/admin/,并输入我们刚创建的超级用户的用户名和密码,我们将看到类似于下图所
示的屏幕。这个网页让我们能够添加和修改用户组,还可以管理与刚才定义的模型Topic相关的数据。

   
视图函数接受请求中的音讯,准备好转变网页所需的数据,再将这个数量发送给浏览器——这一般时采取定义了网页是何许的模版已毕的。

18.2.7 
Django shell

注意:如果大家拔取的是Linux系统,且下边的做法不管用,可拔取系统的包管理器来安装virtualenv。例如,要在Ubuntu系统中设置virtualenv,可采用命令

 

18.4.2 
突显所有大旨的页面

   
大家首初阶入了与所需数据相关联的模子(见(1))。函数topics()包括一个形参:Django从服务器那里收受的request对象(见(2))。在(3)处,大家查询数据库——请求提供Topic对象,并按属性date_added对它们举行排序。我们将回来的查询集存储在topics中。

   
我们在到主页的链接前面添加了一个连字符(见(1)),然后添加了一个到体现所有焦点的页面的链接——使用的也是模板标签url(见(2)).这一行让Django生成一个链接,它与learning_logs/urls.py中名为topics的URL形式匹配。

   
每个URL都被映射到特定的视图——视图函数赢得并拍卖网页所需的数量。视图函数平常调用一个模板,后者生成浏览器可以驾驭的网页。为精通其中的做事原理,大家来创设学习笔记的主页。大家将概念该主页的URL、编写其视图函数并创办一个不难的沙盘。

  再来创造一个国际象棋条目,并创办一个攀岩条目,以提供一些始发数据。上面时第四个国际象棋条目。

    learning_log$ source
11_env/bin/activate

  urlpatterns
= [

   
知道对象的ID后,就可获得对象并查看其任何性质。上面来探视大旨Chess的特性text和date_added的值。

  from
django.contrib import admin

  date_added
= models.DateTimeField(anto_now_add=True)

  (11_env)lenrning_log$            
–(1)

   
1.URL模式

18.1.6 
在Django中成立项目

  admin.site.register(Entry)

  (11_env)learning_log$
ls
                                                             –(2)

  from
learning_logs.models import Topic,Entry

  <p>Topics</p>
 
  <ul>
    {% for topic in topics %}
      <li>
        <a href=”{% url ‘learning_logs:topic’ topic.id %}”>{{
topic }}</a>
      </li>
    {% empty %}
      <li>No topics have been added yet.</li>
    {% endfor %}
  </ul>

18.4.3 
显示特定主题的页面

  Cleaning up….

   
由于大家添加了一个新模型,由此必要再度迁移数据库。大家将逐步地对这一个历程了如指掌:修改models.py,执行命令python
manage.py makemigrations app_name,再度执行命令python manage.py
migrate.

 

    2.视图

   
制定创设网页的流水线后,可以起来伸张“学习笔记”项目了。我们将开创七个突显数据的网页,其中一个列出了具备的大旨,另一个出示特定大旨的有着条条框框。对于每个网页,我们都将点名URL情势,编写一个视图函数,并编制一个模板。但那样做事先,大家先创设一个父模板,项目中的其余模板都将持续它。

   
展现特定宗旨的页面的URL情势与前方的有所URL情势都稍有例外,因为它将运用主旨的ID属性来提议请求的时哪个主旨。例如,借使用户要翻开宗旨Chess
(其id为1)的事无巨细页面,URL将为http://localhost:8000/topics/1/。下面是与这个URL匹配的模式,它包含在learning\_logs/ruls.py中:

    (11_env)learning_log$
deactivate

  ”’学到的关于某个大旨的现实性知识”’

   
完整的科班详细表明了品种的对象,讲演了品种的功能,并啄磨了花色的外观和用户界面。与其它可以的项目设计和商业布置书一样,规范应卓越重点,协理防止项目偏离轨道。那里不会指定完整的档次设计,而只列出一部分不问可知的对象,以崛起开发的根本。大家制订的规范如下:

    1.父模板

   
现在一旦大家刷新浏览器中的主页,将见到链接Topics。单击那个链接,将见到类似于下图所示的网页:

 

def topics(request):                                          –(2)
    “””展现所有的大旨”””
    topics = Topic.objects.order_by(“date_added”)             –(3)
    context = {‘topics’:topics}                           –(4)
    return render(request,’learning_logs/topics.html’,context) 
(5)

{% block content %}{% endblock content %}

   
建立项目时,首先需求以专业的措施对项目展开描述,再建立虚拟环境,以便在里边创设项目。

  <p>Topic:{{ topic
}}</p>                                           (1)
  <p>Entries:</p>

   
在巅峰中切换来目录learning_log,并像下边一样创设一个虚拟环境:

   
那一个文件的首先部分创制了一个暗含项目名的段子,该段落也是一个到主页的链接。为开创链接,大家使用了一个模板标签,它是用大括号和百分号({%
%})表示的。模板标签是一小段代码,生成要在网页中彰显的音信。在这么些实例中,模板标签{%
url ‘learning_logs:index’
%}生成一个URL,该URL与learning_logs/urls.py中定义的名为index的URL情势匹配。在那么些示例中,learning_logs是一个一声令下空间,而index是该命名空间中一个非同日常的URL形式。

   
我们只是在用于主页URL的正则表达式中添加了topics/(见(1)).Django检查请求的URL时,这几个情势与那样的RUL匹配:基础URL后边跟着topics。可以在终极包涵斜杠,也得以概括它,但单词topics前边无法有其余事物,否则就与该情势不匹配。其URL与该形式匹配的请求都将送交views.py中的函数topics()举办处理。

  Migrations
for ‘learning_logs’:

  (11_env)learning_log$
python manage.py startapp learning_logs

图片 3

   
在依旧处于活动的虚拟环境的状态下(11_env包括在括号内),执行如下命令来成立一个档次:

  属性date_added是一个Date提姆eField——记录日期和时间的多寡。大家传递了实参auto_add_now=True,每当用户成立新宗旨时,那都让Django将这几个特性自动设置成当前几日子和岁月。

  (11_env)learning_log$
python manage.py migrate

    The
opening is the first part of the game,roughly the first ten moves or so.
In the opening,it’s a good idea to do three things—— bring out your
bishops and knights,try to control the center of the board,and castle
your king.
    Of course,these are just guidelines.It will be important to learn
when to follow these guidelines and when to disregard these
suggestions.

topics.html

  11_env 
db.sqlite3  learning_log  learning_logs  manage.py
  (11_env)learning_logs$ ls learning_logs/                      
  –(2)

   
base.html

    {% for item in list
%}

    ”’用户学习的宗旨”’

   
有了迅猛的网页成立方法,就能注意于此外三个网页了:突显任何大旨的网页以及体现特定主旨中条目标网页。所有主旨页面突显用户创设的保有宗旨,它是率先个须求采纳数据的网页。

   
模板继承的有点伊始显现出来了:在子模板中,只需包罗当前网页特有的情节。这不只简化了每个模板,还使得网页修改起来不难很多。要修改很多网页都包罗的要素,只需在父模板中修改该因素,大家所做的修改将传输到连续该父模板的每个页面。在含蓄数十甚至数百个网页的花色中,那种布局使得网站创新起来不难而且飞速得多。

  >>>
t.entry_set.all()
  <QuerySet [<Entry: Entry object>, <Entry: Entry
object>]>
   
为经过外键关系获取数据,可使用相关模型的小写名称、下划线和单词set.例如,借使大家有模型Pizza和Topping,而Topping通过一个外键关联到Pizza要是大家有一个名为my_pizza的靶子,表示一张比萨,就可以动用代码my_pizza.topping_set.all()来获得这张比萨的有着配料。

  topic =
models.Foreignkey(Topic)                                 (2)

   
“””为learning_logs定义URL模式”””

    urls.py

注意:(2)处和(3)处的代码被称为查询,因为它们向数据库查询特定的音信。在团结的类型中编辑那样的查询时,现在Django
shell中开展尝试大有裨益。比较于编写视图和模板,再在浏览器中检查结果,在shell中实施代码可更快地获得反馈。

18.1.3 
安装virtualenv

其多个实参将这些URL情势的名称指定为index,让我们可以在代码的其余地点引用它。每当要求提供到那个主页的链接时,大家都将使用那几个称号,而不编写URL.

{% endblock content %}

18.2.4 
定义模型Entry

    base.html

  # Create your models here.(在此地开创模型)

图片 4注意:如果大家在浏览器中看看一条音信,提出访问的网页不可用,请确认大家在终点窗口中运行着Django服务器即使没有请激活虚拟环境,并执行命令python
manage.py runserver

   
我们要求告诉Django,默许应选取非常属性来彰显有关主题的音讯。Django调用艺术__str__(self)来浮现模型的简短表示。在此地,我们编辑了措施__str__(),它放回存储在text中的字符串。

   

18.1.1 
指定专业

    (11_env)learning_log$
python manage.py migrate

   
模板定义了网页的布局。模板指定了网页时怎样的,而每当网页被呼吁时Django将填入相关的数目。大家的主页视图没有提供其余数据,由此相应的沙盘格外简答。

注意:正则表明式常常被称呼regex,大概每种编程语言都使用它。它们的用处多的怀疑,但需求经过一定的训练才能熟练。若是大家不知底前边介绍的内容,也不用担心,大家在成功那几个类型的进度中,将会看出众多正则表明式。

18.2.6 
向管理网站注册Entry

配置到服务器。

      #主页

models.py

18.5  小结

   
大家需求包括learning_logs的URL.

  <p>Topics</p>
  <ul>                                                         
–(1)
    {% for topic in topics %}                                   –(2)
     
<li>{{topic}}</li>                                       
–(3)
    {% empty %}                                                 –(4)
      <li>No topics have been added yet.</li>
    {% endfor %}                                                –(5)
  </ul>                                                        
–(6)

 

  >>>
Topic.objects.all()
  <QuerySet [<Topic: Chess>, <Topic: Rock
Climbing>]>
    在活动的虚拟环境中施行时,命令python manage.py
shell启动一个Python解释器,可接纳它来探索存储在类型数据库中的数据。在此处,大家导入了模块learning_logs.models中的模型Topic,然后使用方法Topic.objects.all()来获取模型Topic的装有实例;它回到的是一个列表,称为查询集(queryset).

  那一个命令运行11_env/bin中的脚本activate。环境处于活动状态时,环境名将包罗在括号内,如(1)处所示。在那种景色下,大家得以在条件中安装包,并使用已安装的包。我们在11_env中设置的包仅在该环境处于激活状态时才可用。

专注:如若大家选拔的时Windows系统,请使用命令11_env\Scripts\activate(不带有source)来激活这一个虚拟环境。

  from
django.conf.urls import include,url

   
子模板并非必须定义父模板中的每个块,因而在父模块中,可采纳任意多个块来留住空间,而子模板可依照须求定义相应数据的块。

小心:在Python代码中,大家大概连接缩进五个空格。相比较于Python文件,模板文件的缩进层级更加多,因而每个层级经常只缩进两个空格

{% extends
“learning_logs/base.html” %}

   
在(2)处,运行了指令ls(在windows系统上应为dir),结果评释Django新建了一个名为learning_log的目录。它还创建了一个名为manage.py的文件,

from
django.db import models

   url(r’^$’,views.index,name=’index’),

   
大家将为这几个项目指定专业,然后为应用程序使用的数据定义模型。我们将使用Django的保管体系来输入一些上马数据,再念书编写视图和模板,让Django能够为大家的网站创造网页。

   
现在必要再行编排index.html,使其延续base.html,如下所示:

<p>Learning
Log</p>

Installing
setuptools,pip….done

   

    $ pip install –user
virtualenv

 

      return
self.text

   
现在开拓一款Web浏览器,并输入URL:
http://localhost:8000/;如果这个不管用,请输入http://127.0.0.1:8000/。我们将看到类似于图18-1所示的页面,这个页面时Django创建的,让我们知道到目前为止一切正常。现在暂时不要关闭这个浏览器。若要关闭这个服务器,按ctrl+c即可。

   
那里运行了模块venv,并使用它来制造一个名为11_env的虚拟环境。假如如此做管用,请跳到前边的18.1.4节;如若任凭用,请阅读18.1.3节。

  urlpatterns
= [                                                   –(4)

  (11_env)learning_log$
ls learning_log                                               
–(3)

   
当前,在前边打开的顶峰窗口中应有还运行着runserver.请再打开一个终极窗口(或标签页),并切换来manage.py所在的目录。激活该虚拟环境,再执行命令startapp:

   
即便关闭运行虚拟环境的顶峰,虚拟环境也将不再处于活动状态。

18.2.2 
激活模型

   
learning_logs中的文件views.py是大家执行命令python manage.py
startapp时自动生成的,当前其内容如下:

  Operations to
perform:                                                   –(1)
    Apply all migrations: admin, auth, contenttypes, sessions
  Running migrations:                                             
    Applying contenttypes.0001_initial… OK
    Applying auth.0001_initial… OK
    Applying admin.0001_initial… OK
    Applying admin.0002_logentry_remove_auto_add… OK
    Applying contenttypes.0002_remove_content_type_name… OK
    Applying auth.0002_alter_permission_name_max_length… OK
    Applying auth.0003_alter_user_email_max_length… OK
    Applying auth.0004_alter_user_username_opts… OK
    Applying auth.0005_alter_user_last_login_null… OK
    Applying auth.0006_require_contenttypes_0002… OK
    Applying auth.0007_alter_validators_add_error_messages…
OK
    Applying auth.0008_alter_user_username_max_length… OK
    Applying sessions.0001_initial… OK
  (11_env) zhuzhu@zhuzhu-K53SJ:~/learning_log$ ls

    def
__str__(self):

    
<p>Learning Log helps you keep track of your learning, for any
topic you’re learning about.</P>

  admin.py

   
现在亟待修改父模板,使其富含到显示所有主题的页面的链接:

  上面来搬迁数据库并查看输出:

18.4.1 
模板继承

2.子模板

   
那个模板须求出示主题的称谓和条款的内容;如若当前主旨不包蕴其余条目,大家还需向用户提出那或多或少:

   
当今的网站实际上都是富应用程序(rich
application)
,就像成熟的桌面应用程序一样。Python提供了一组开发Web应用程序的天下第一工具。在本章中,大家将学习如何运用Django(http://djangoproject.com/)来开发一个名为"学习笔记"(learningLog)的项目,这是一个在线日志系统,让我们能够记录所学习的有关特定主题的知识。

   
为弄通晓当前位于哪个urls.py文件中,我们在这几个文件开始添加了一个文档字符串(见(1))。接下来,我们导入了函数url,因为我们要求使用它来将URL映射到视图(见(2))。我们还导入了模块views(见(3)),其中的句点让Python从近日的ruls.py模块所在的文书夹中导入视图。在这么些模块中,变量urlpatterns是一个列表,包涵可在运用程序learning_logs中呼吁的网页(见(4))。

   

    learning_log$ python -m
venv 11_env

图片 5

  ]

    verbose_name_plural
= ‘entries’

   

   
发现URL与这么些格局匹配时,Django将调用视图函数topic(),并将积存在topic_id中的值作为实参传递给它。在那一个函数中,大家将采纳topic_id的值来获得相应的要旨。

   
接下去时属性text,它是一个TextField实例。那种字段不必要长度限制,因为我们不想限制条款的长度。属性date_added让我们可以按创立顺序展现条目,并在每个条目旁边停放时间戳。

  Successfully installed
Django

   
那为我们导入了模块models,还让大家创制自己的模子模型告诉Django何以处理应用程序中蕴藏的数量。在代码层面,模型就是一个类,就像是前边议论的各种类一样,包蕴属性和办法。

    3.模板

  class
Topic(models.Model):

   
使用Django,首先须要建立一个编造工作条件虚拟环境系统的一个地方,我们可以在其中安装包,并将其于其余python包隔离。将项目的库与其他的品类分别是惠及的,且为了将”学习笔记”布置到服务器,那也是必须的。

  {% endfor %}

  urls.py

     -
Create model Entry

   
显示所有大旨的页面的沙盘接受字典context,以便可以选取topics()提供的多寡。请创立一个文件,将其取名为topics.html,并将其储存到index.html所在的目录中。上面演示了怎么样在这几个模板中突显宗旨:

  访问http://localhost:8000/admin/,将提示我们输入用户名和密码如上图所示:接下来,我们登录就可以看见我们创建的应用程序:如下所示:

  (11_env)learning_log$

 

    Applying
learning_logs.0002_entry… OK                       
(2)

   
建立虚拟环境之后,要求使用下边的授命激活它:

   
learning_log$

注意:千万不要忘了那几个句点,否则安排应用程序时将受到一些布署难点。如果忘记了这一个句点,就将开创的文件和文件夹删除(11_env除外),再重复运行这些命令。

    0002_entry.py
                                             (1)

    url(r’&^$’,views.index,name=’index’),
                        –(5)

  </p>

   
那个文件卓殊不难。对于不熟识HTML的读者,那里解释一下:标签<p></P>标识段落;标签<p>提议了段落的启幕地方,而标签</p>提议了段落的了断地方。那里定义了多个段子:首个常任标题,第三个解说了用户可应用”学习笔记”来做什么。

18.2 
创造应用程序

  (11_env)learning_log$
ls                                          –(1)

    The
opening is the first part of the game,roughly the first ten moves or so.
In the opening,it’s a good idea to do three things—— bring out your
bishops and knights,try to control the center of the board,and castle
your king.
    Of course,these are just guidelines.It will be important to learn
when to follow these guidelines and when to disregard these
suggestions.

   
目录learning_log包括4个文本(见(3)),其中最关键的是settings.py、urls.py和wsgi.py.文件settings.py指定Django怎么样与大家的连串相互以及如何保管项目。在付出品种的历程中,大家将修改其中一些安装,并丰盛一些安装。文件urls.py告诉Django应创造哪些网页来响应浏览器请求。文件wsgi.py帮助Django提供它创立的文件,这一个文件名是web
server gateway
interface(Web服务器网关接口)
的首字母缩写。

网站地图xml地图