Django基础

知识预览

  • Django的模型

  • URL配置

  • 视图函数

Django的模型

下载Django

pip install django

创建一个项目

在命令行中,使用 cd 命令进入你想存储代码所在的目录,然后运行以下命令:

django-admin startproject mysite

 让我们来看看 startproject 都创建了些什么:

mysite/
    manage.py       #一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
    mysite/
        __init__.py
        settings.py     #Django 项目的设置/配置
        urls.py      #Django 项目的 URL 声明; 一份由 Django 驱动的网站“目录”
        wsgi.py       #一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目

运行Django项目

启动命令:

python manage.py runserver

这样就已经启动了 Django 开发服务器,一个纯粹的由 Python 编写的轻量级 Web 服务器。我们在 Django 内包含了这个服务器,这样你就可以迅速开发了,在产品投入使用之前不必去配置一台生产环境下的服务器 – 例如 Apache,Nginx。

现在是一个很好的提示时机:不要 在任何类似生产环境中使用此服务器。它仅适用于开发环境。(我们提供的是 Web 框架的业务,而不是 Web 服务器。)

现在服务器正在运行中,请在你的 Web 浏览器中访问 http://127.0.0.1:8000/ 。 你会看到一个令人愉悦的,柔和的淡蓝色 “Welcome to Django” 页面。它工作正常!

 默认情况下,runserver 命令启动的开发服务器只监听本地 IP 的 8000 端口。如果你想改变服务器的端口,把它作为一个命令行参数传递即可。例如以下命令启动的服务器将监听 8080 端口:

python manage.py runserver 8080

 创建应用

你通过 Djaong 编写的每个应用都是由 Python 包组成的,这些包存放在你的 Python path 中并且遵循一定的命名规范。 Django 提供了个实用工具可以自动生成一个应用的基本目录架构,因此你可以专注于编写代码而不是去创建目录。

 项目与应用之间有什么不同之处?应用是一个提供功能的 Web 应用 – 例如:一个博客系统、一个公共记录的数据库或者一个简单的投票系统。 项目是针对一个特定的 Web 网站相关的配置和其应用的组合。一个项目可以包含多个应用。一个应用可以在多个项目中使用。

创建应用命令:

python manage.py startapp polls

这将创建一个 polls 目录,其展开的样子如下所示:

polls/
    __init__.py
    models.py       
    tests.py         
    views.py

URL配置

为了给一个应用设计URL,你需要创建一个Python 模块,通常称为URLconf(URL configuration)。这个模块是纯粹的Python 代码,包含URL 模式(简单的正则表达式)到Python 函数(你的视图)的简单映射。

简单的URL conf

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/([0-9]{4})/$', views.year_archive),                             #相当于调用 year_archive(request,year)
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),           
]

命名组

上面的示例使用简单的、没有命名的正则表达式组(通过圆括号)来捕获URL 中的值并以位置 参数传递给视图。在更高级的用法中,可以使用命名的正则表达式组来捕获URL 中的值并以关键字 参数传递给视图。

在Python 正则表达式中,命名正则表达式组的语法是(?P<name>pattern),其中name 是组的名称,pattern 是要匹配的模式。

下面是以上URLconf 使用命名组的重写:

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
    url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
    url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),
]

这个实现与前面的示例完全相同,只有一个细微的差别:捕获的值作为关键字参数而不是位置参数传递给视图函数。例如:

/articles/2005/03/    请求将调用views.month_archive(request, year='2005', month='03')函数,
                      而不是views.month_archive(request, '2005', '03')。
/articles/2003/03/03/ 请求将调用函数views.article_detail(request, year='2003', month='03', day='03')。

在实际应用中,这意味你的URLconf 会更加明晰且不容易产生参数顺序问题的错误 —— 你可以在你的视图函数定义中重新安排参数的顺序。当然,这些好处是以简洁为代价;有些开发人员认为命名组语法丑陋而繁琐。

视图函数

一个视图函数,或者简短来说叫做视图,是一个简单的Python函数,它接受web请求,并且返回web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以。无论视图本身包含什么逻辑,都要返回响应。

render方法

结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的 HttpResponse 对象。

render(request, template_name,[context])

redirect方法

为传递进来的参数返回HttpResponseRedirect 给正确的URL 。

redirect(to, [permanent=False, ]*args, **kwargs)
原文地址:https://www.cnblogs.com/mituxiaoshutong/p/9073033.html