[翻译]Django1.11 Writing your first Django app, part 1

原文地址
让我们通过例子来学习

通过这个教程,我们将介绍一个基本的投票应用程序的创建过程。

它由两部分组成:

  • 一个允许人们查看和投票的站点。
  • 可以添加、更改和删除投票的管理站点。

我们假定你已经安装了Django。在shell命令行运行以下命令你可以知道Django是否安装并且知道Django的版本。

$ python -m django --version

如果安装了Django,你应该看到你安装的版本。如果没有安装,你会得到一个错误提示““No module named django”.

本教程是写给Django1.11 和Python3.4及以后版本的。


Create a project

  • 如果这是您第一次使用Django,你必须注意初始设置。即,你创建Django项目需要自动生成一些代码。Django project即一个Python 库即Django实例的代码集合,包括数据库配置,Django特定选项和应用程序特定设置。
  • 从命令行,CD进入您希望存储代码的目录,然后运行以下命令:
$ django-admin startproject mysite

这将创建在你的当前目录的mysite目录下。如果命令不起作用,参考django-admin

注意
项目命名避免Python内置库或者Django组件

让我们看下startproject 命令创建的目录

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

这些文件是:

  • mysite/根目录外的名字仅仅是一个你的项目容器。这个名字不要紧;可以重新命名。

  • manage.py:一个命令行工具,可以让你用Django项目以不同的方式进行交互。详情阅读manage.py.

  • mysite/下目录是您项目的实际Python包。它的名字(mysite)是Python包名,使用里面的所用东西需要用import(例如mysite.urls)

  • mysite/ __init__ .py:一个空的文件,告诉Python这个目录应该是一个Python包。如果您是python初学者,请阅读官方Python文档中有关包的更多信息

  • mysite/ settings.py:这个Django项目/配置设置。Django settings将告诉你所有关于如何设置配置。

  • mysite/urls. py:这个Django项目的URL声明;更多关于URL的信息

  • mysite/ wsgi.py:web 服务器和Python Django框架的接口WSGI

web server

  • 让我们来验证你的Django项目工程。cd 进入mysite根目录,并运行下面的命令:
$ python manage.py runserver

然后再命令行有以下输出:

Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

June 22, 2017 - 15:50:53
Django version 1.11, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

中间的‘You have unapplied migrations; ’的警告,是关于数据库的警告,接下来会说,现在忽略。

  • 你部署了Django web服务器,这是一个纯粹用Python的轻量级Web服务器。我们将这个web 服务器集合在Django中,因此Django可以快速的开发,不需要配置web server。直到准备使用Apache去投入使用。

  • 注意:不要在任何类似生产环境的环境中使用此服务器。它只用于开发时使用。(我们从事的是制作Web框架,而不是Web服务器)。

  • 现在,服务器的运行在 HTTP:/ / 127.0.0.1:8000 /。打开您的网页浏览器。你会看到一个“欢迎使用Django”页面!

改变端口

runserver 命令默认端口为8000;
如果想改变端口,可以作为命名行参数改变,此命令在端口8080上启动服务器:
$ python manage.py runserver 8080

如果要更改服务器的IP,请将其与端口一起传递。例如,监听所有可用的公共IP,请使用:
$ python manage.py runserver 0:8080


创建一个Polls app

  • 现在你已经创建好project了,接下来开始做应用了。

  • 你写在Django的每个应用程序是一个遵循一定的公约Python包。Django自带的自动生成程序的基本目录结构,所以你可以专注于编写代码而不是创建目录。

Project vs apps
一个项目和一个应用程序有什么区别?一个应用程序是一个Web应用程序,有–如一个博客系统,一个公共记录或一个简单的投票程序数据库。一个项目是一个特定网站的配置和应用程序的集合。一个项目可以包含多个应用程序。一个应用程序可以在多个项目中。

  • 确保在同样的路径下产生APP,用manage.py
python manage.py startapp polls
  • polls文档目录结构如下
polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

编写第一个view

  • 打开 polls/views.py 文件并复制一下代码:

polls/views.py

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

这可能是Django中最简单的view。为了调用视图,我们需要url映射。

  • polls目录0创建一个url配置文件,urls.py。polls目录如下:
polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py
  • polls/urls.py文件下复制一下代码:

polls/urls.py

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]
  • 下一步在项目url配置根文件中添加polls.urls模块。添加一个django.conf.urls.include库。代码如下:

mysite/urls.py

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

urlpatterns = [
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', admin.site.urls),
]
  • include()函数能引入其他的url配置文件。值得注意的是include那行代码中的正则表达式没有以‘$’字符结束,而是一个‘/’。当Django遇到include()时,如若正则表达式成功匹配到‘/’,即砍掉‘/’以及之前的字符,将余下字符传入引入的url配置文件去进一步处理。
  • 让我们看下urls.py以及view是否生效:
$ python manage.py runserver

在浏览器中打开http://localhost:8000/polls/,你将能看到在view中定义的字符串“Hello, world. You’re at the polls index.”


url()中的参数:regex正则表达式

正则表达式是一个字符串匹配语法

  • Django从第一个正则表达式开始,到urlpatterns列表结束,比较请求的URL对每个正则表达式,直到找到一个匹配的。
  • 注意 正则表达式不匹配域名以及post和get参数。例如:
    https://www.example.com/myapp/ urlconf只匹配myapp/
    https://www.example.com/myapp/?page=3 urlconf也只匹配myapp/

url()中的参数:view

  • 当Django找到正则表达式匹配,Django调用指定的视图函数,用一个HttpRequest对象作为第一个参数,任何“捕获”从正则表达式的值作为其他参数。如果正则表达式使用简单的捕获值,将值作为参数传递;如果使用命名捕获值,将关键字作为参数传递。

url()中的参数:name

将你的url命名,然后就可以在Django中的任何地方使用。尤其是在template模板文件中。



当您熟悉基本的请求和响应流时,请阅读本教程的第2部分以开始使用数据库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值