0基础——Django学习笔记

1. 为何选择Django? 使用Django,您可以在几个小时内将Web应用程序从概念发布到启动。Django负责处理Web开发的大部分麻烦,因此您可以专注于编写应用程序,而无需重新发明轮子。它是免费和开源的。
Django旨在帮助开发人员尽快将应用程序从概念到完成。
Django包含许多可用于处理常见Web开发任务的附加功能。Django负责用户身份验证,内容管理,站点地图,RSS源以及更多任务 - 开箱即用。
Django严肃对待安全性并帮助开发人员避免许多常见的安全错误,例如SQL注入,跨站点脚本,跨站点请求伪造和点击劫持。其用户身份验证系统提供了一种管理用户帐户和密码的安全方法。
Django快速灵活的扩展能力使很多访问量非常大的网站使用它。
很多机构已经使用Django来构建各种各样的东西 - 从内容管理系统到社交网络再到科学计算平台。
2. 如何开始? 2.1. 快速安装指南 Python包含一个名为SQLite的轻量级数据库,因此您不需要设置数据库。
在https://www.python.org/downloads/或使用操作系统的软件包管理器获取最新版本的Python 。
您可以通过从shell 输入python来验证是否已安装Python ; 你应该看到类似的东西:

Python 3.x.y[GCC 4.x] on linuxType "help", "copyright", "credits"**or**"license"**for** more information.>>>

你有三个简单的选项来安装Django:
  • 安装正式版。这是大多数用户的最佳方法。
  • 安装操作系统分发版提供的Django版本。
  • 安装最新的开发版本。此选项适用于需要最新和最强大功能并且不怕运行全新代码的发烧友。您可能会在开发版本中遇到新的错误,但报告它们有助于Django的开发。此外,与最新的稳定版本相比,第三方软件包的发行版不太可能与开发版本兼容。
这里介绍一下安装正式版的方法:
  1. 首先要安装pip,最简单的方法是使用pip的独立安装程序,但是实际上如果你已经安装了python那么对应版本的pip就已经安装好了。
  2. 运行:
$ pip install Django

  1. 验证安装, 要验证Python可以看到Django,请从shell中输入python。然后在Python提示符下,尝试导入Django::
>>>import django >>>print(django.get_version()) 2.2

至此你已经成功安装了django。
2.2. 第一个Django应用程序 这个样例中将创建第一个简单的Django应用程序,它由两部分组成:
  • 一个公共站点,允许人们查看民意调查并在其中投票。
  • 一个管理站点,允许您添加,更改和删除民意调查。
我们假设你已经安装了Django。您可以通过在shell提示符中运行以下命令(由$前缀表示)来告知Django已安装以及哪个版本:
$ python -m django –version

如果安装了Django,您应该会看到安装的版本。如果不是,您将收到错误消息“没有名为django的模块”。
为了创建第一个Django网站,需要配置Django生成一些初始设置。使用Django-admin命令将自动生成一些建立Django 项目的代码,包括数据库配置,Django特定选项和特定于应用程序的设置。
从命令行cd进入要存储代码的目录,然后运行以下命令,这将在当前目录中创建一个mysite目录。:
$ django-admin startproject mysite

注意:您需要避免在内置Python或Django组件的名称来命名项目,例如像django(这将与Django本身冲突)或test(与内置Python包冲突)这样的名称。
让我们来看看startproject创造了什么:
mysite/ manage.py mysite/ __init__.py settings.py urls.py wsgi.py

  • 外部mysite/根目录只是项目的容器。它的名字对Django来说无关紧要; 你可以将它重命名为你喜欢的任何东西。
  • manage.py:一个命令行实用程序,允许您以各种方式与此Django项目进行交互。您可以在django-admin和manage.py中阅读有关的所有详细信息 。
  • 内部mysite/目录是项目的实际Python包。它的名称是您需要用来导入其中任何内容的Python包名称(例如mysite.urls)。
  • mysite/init.py:一个空文件,告诉Python该目录应该被视为Python包。
  • 【0基础——Django学习笔记】mysite/settings.py:此Django项目的设置/配置。 Django设置将告诉您有关设置如何工作的所有信息。
  • mysite/urls.py:这个Django项目的URL声明; 您的Django支持的站点的“目录”。您可以在URL调度程序中阅读有关URL的更多信息。
  • mysite/wsgi.py:与WSGI兼容的Web服务器的入口点,用于为您的项目提供服务。有关更多详细信息,请参阅如何使用WSGI进行部署。
启动开发版服务器:
$ 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.July 19, 2019 - 15:50:53 Django version 2.2, using settings 'mysite.settings' Starting development server at [http://127.0.0.1:8000/](http://127.0.0.1:8000/) Quit the server with CONTROL-C.

注意:暂时忽略有关未应用数据库迁移的警告; 我们很快就会处理数据库。
您已经启动了Django开发服务器,这是一个纯粹用Python编写的轻量级Web服务器。我们已经将它包含在Django中,因此您可以快速开发,而无需处理配置生产服务器(如Apache),直到您准备好进行生产。
注意:不要在生产环境中使用此服务器。它仅用于开发时使用。(我们的业务是制作Web框架,而不是Web服务器。)
现在服务器正在运行,请使用Web浏览器访问http://127.0.0.1:8000/。你会看到一个“Congratulations!”页面,火箭起飞。有效!

0基础——Django学习笔记
文章图片
改变端口:默认情况下,该runserver命令在端口8000的内部IP上启动开发服务器。如果要更改服务器的端口,请将其作为命令行参数传递。例如,此命令在端口8080上启动服务器:
$ python manage.py runserver 8080

如果要更改服务器的IP,请将其与端口一起传递。例如,要侦听所有可用的公共IP(如果您正在运行Vagrant或想要在网络上的其他计算机上展示您的工作,这很有用),请使用:
$ python manage.py runserver 0:8000

0是0.0.0.0的快捷方式。
2.3. 创建子应用 您在Django中编写的每个应用程序都包含一个遵循特定约定的Python包。Django附带了一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不是创建目录。
您的应用程序可以存在于Python路径的任何位置。在本教程中,我们将在您的manage.py 文件旁边创建我们的民意调查应用程序,以便可以将其作为自己的顶级模块导入,而不是作为子模块导入mysite。
要创建应用程序,请确保您与该目录位于同一目录中manage.py 并键入以下命令:
$ python manage.py startapp polls

这将创建一个目录polls,其布局如下:
polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py

我们来写第一个视图。打开文件polls/views.py 并在其中放入以下Python代码:
from django.http import HttpResponse defindex(request): return HttpResponse("Hello, world. You're at the polls index.")

这是Django中最简单的视图。要调用视图,我们需要将其映射到URL - 为此我们需要一个URLconf。
要在polls目录中创建URLconf,请创建一个名为的文件urls.py。应用目录现在应该如下所示:
polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py urls.py views.py

在该polls/urls.py文件中包含以下代码:
from django.urls import path from . import views urlpatterns= [ path('', views.index, name='index'), ]

下一步是将根URLconf指向polls.urls模块。在 mysite/urls.py,添加导入django.urls.include并include()在urlpatterns列表中插入一个 ,所以你有:
from django.contrib impor admin from django.urls import include, path urlpatterns= [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ]

该include()函数允许引用其他URLconf。每当Django遇到时include(),它都会删除与该点匹配的URL的任何部分,并将剩余的字符串发送到包含的URLconf以进行进一步处理。
include()的设计思想是使即插即用的URL变得容易。由于子应用polls位于他们自己的URLconf(polls/urls.py)中,因此可以将它们放在“/ polls /”下。或“/ fun_polls /”下,或“/ content / polls /”下,或任何其他路径根目录下,并且应用程序仍然可以工作。
您现在已将index视图连接到URLconf。验证它是否使用以下命令
$ python manage.py runserver

在浏览器中转到http:// localhost:8000 / polls /,您应该看到在index视图中定义的文本“ Hello, world. You're at the polls index. “。
该path()函数传递了四个参数,两个必需: route和view,以及两个可选:kwargs,和name。
route是一个包含URL模式的字符串。处理请求时,Django从第一个模式开始urlpatterns并沿着列表向下移动,将请求的URL与每个模式进行比较,直到找到匹配的模式。
模式不搜索GET和POST参数或域名。例如,在请求中https://www.example.com/myapp/,URLconf将查找myapp/。在请求中https://www.example.com/myapp/?page=3,URLconf也会查找myapp/。
view当Django找到匹配模式时,它会调用指定的视图函数,并将HttpRequest对象作为第一个参数,并将路由中的任何“捕获”值作为关键字参数调用。
kwargs任意关键字参数可以在字典中传递到目标视图。
name命名您的URL可以让您从Django的其他地方明确地引用它,特别是在模板中。此强大功能允许您在只触摸单个文件的同时对项目的URL模式进行全局更改。
3. Django中载入js和css文件 以layui为例,项目的文件夹结构例如以下:

0基础——Django学习笔记
文章图片

settings.py中static变量的设置:
STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static') STATIC_URL = '/static/'

urls.py中添加引用
from django import views from . import settings

urlpatterns的设置中添加:
url(r'^static/(?P.*)$', views.static.serve, { 'document_root': settings.STATIC_ROOT, }, name='static'),

模板文件里的引用方式:

最后再将djangoWorkSpace加进setting.py的
# Application definitionINSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'djangoWorkSpace', ]

样例:
开始使用layui - 锐客网

其中view.py中
···
from django.shortcuts import render
def hello(request):
context = {}
context['hello'] = 'Hello World My Firt Django and layui app!'
return render(request, 'hello.html', context)
···
效果

0基础——Django学习笔记
文章图片

    推荐阅读