跟我一起学习Django

最近接触了Python,用Scrapy框架写了一个小小的爬虫程序,面对抽取出来的数据,很想做一个可视化的界面对其进行操作,于是准备学习一下Python的web框架Django。

跟随django tutorial的脚步,我们来一步步走下去吧~

安装过程略过,默认已经安装好Django,可在控制台使用命令检查Django版本,因为我的python版本是3.6,所以安装的Django版本是2.0.1

python -m django --version

创建一个项目

用命令创建Django项目自动生成一些代码,一个Django实例设置集合、数据库配置、Django特定的选项、特定于应用程序的设置

django-admin startproject mysite

生成的项目结构

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

外层mysite  项目的container,可以任意改名

manage.py  命令行工具,可以以多种方式和Django project进行交互

里层mysite  项目实际的Python包,导入任何在其内部的东西都需要使用该包名

__init__.py  一个空文件,告诉python这个目录是一个python包

settings.py  Django project的设置/配置

urls.py  url声明,Django支持的站点目录

wsgi.py  一个兼容WSGI的web服务器为你的项目提供入口点

 

开发服务器

进入外层mysite目录,命令行键入以下命令启动django服务器

python manage.py runserver

启动成功后访问http://127.0.0.1:8000/,可以看到Welcome to Django欢迎页面。  

Django开发服务器,是纯粹用python编写的轻量级web服务器,这是为了开发方便而包含在Django框架中的,仅仅用于开发环境而不是生产环境。

可以修改端口为8080

python manage.py runserver 8080   

也可以修改服务器IP,如监听所有允许的IP(0是0.0.0.0的简写

python manage.py runserver 0:8000

开发服务器会自动为每个请求重新加载Python代码,所以无需重启服务器以使代码生效,但添加文件等操作并不会触发重新启动,所以在这种情况下必须重新启动服务器。

下一步骤让我们创建一个投票(polls)应用

Django有个应用程序(app)的概念,应用程序是一个web应用程序,它会执行一些操作(如微博系统、公共档案数据库或简单的应用程序),项目(project)则是特定网站的配置和应用的集合,项目可以包含多个应用程序,一个应用程序也可以在多个项目中。

我们在manage.py的同级创建poll app,这样它就可以作为顶级模块来导入了。

使用命令:

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中编写代码:

1 from django.http import HttpResponse
2 
3 
4 def index(request):
5     return HttpResponse("Hello, world. You're at the polls index.")

想要调用该视图(view),我们需要将它映射到一个url,为此我们需要一个URLconf。在pools下创建urls.py文件。

pools/urls.py

1 from django.urls import path
2 
3 from . import views
4 
5 urlpatterns = [
6     path('', views.index, name='index'),
7 ]

接下来,将根URLconf指向polls.urls模块。

mysite/urls.py

1 from django.urls import include, path
2 from django.contrib import admin
3 
4 urlpatterns = [
5     path('polls/', include('polls.urls')),
6     path('admin/', admin.site.urls),
7 ]

include()函数允许引用其他URLconf,当Django遇到include()时,切断与该点匹配的url,并且将剩余的字符串发送给包含的urlconf做进一步的处理。

这是一个即插即用的概念,不论把urls.py放到任何位置,应用都可以起作用。

如今,我们把index视图和urlconf连接起来了,现在我们用python manage.py runserve启动服务器,然后进入http://localhost:8000/polls/页面,如果配置正确,我们会看到index中返回的“Hello, world. You're at the polls index.”

Path()

path()函数有四个参数,两个必需的参数route和view,两个可选的参数kwargs和name

route:包含了URL模式(pattern)的字符串,在处理请求时,Django从网址模式中的第一个模式开始,在列表中依次向下,对每一个模式匹配请求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模式进行全局更改,同时只变动单个文件。

posted on 2018-01-27 17:26  xinghe27  阅读(118)  评论(0编辑  收藏  举报