Osheep

时光不回头,当下最重要。

第一个Django小例子

前言

最近要搞一个比赛,技术大神说要用python作为后端,并且采用django框架,这让我完全不懂的人很尴尬呀,所以赶快自学了一下,也用django搭建了自己的一个博客网站,但是功能都还不完善,大家可以帮忙提下意见。
我的博客

Django介绍

《第一个Django小例子》

Django

Django是一个高级的Python Web框架,它鼓励快速开发和简洁,务实的设计。

由经验丰富的开发人员构建,它负责Web开发的许多麻烦,因此您可以专注于编写应用程序,而无需重新创建轮子。它是免费的和开源的。
Django官方文档

安装

请确保已经正确安装了python和pip。使用pip安装django:

pip install django

希望你能在命令行看到这句话:

Installing collected packages: djang

Successfully installed django-1.11.2

然后在命令行输入:

python -m django version

就可以看到版本号啦

开始第一个例子

  1. 创建我们的工程目录,一行命令就够了:

    django-admin startproject mysite

    然后我们的目录结构会是这样:

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

    第一个mysite是根目录,叫什么无关紧要。

    里面的manage.py是命令行的工具,能够让你管理这个项目。

    然后是mysite/目录,这是一个python包目录。

  2. 运行服务

    在第一个mysite目录下,输入:

    python manage.py runserver

    然后在浏览器输入:http://127.0.0.1:8000/

    然后你会看到It worked!等文字,说明已经部署好了。

  3. 创建一个Polls(民意调查)应用

    还是在当前目录: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
    
    def index(request):
        return HttpResponse("Hello, world. You're at the polls index.")

    然后在当前文件夹新建一个python文件:urls.py,复制代码:

    from django.conf.urls import url
    
    from . import views
    
    urlpatterns = [
        url(r'^$', views.index, name='index'),
    ]

    然后在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),
    ]

    最后再次启动服务:

    python manage.py runserver

    在浏览器输入:localhost:8000/polls/ 就可以访问到刚刚编写的网页了。

分析代码

我们从下往上进行分析,首先在浏览器输入了localhost:8000/polls/,那么django就会帮你在mysite/urls.py中的urlpattern列表中寻找匹配polls/的那一项,我们可以看到,里面有两项:

urlpatterns = [
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', admin.site.urls),
]

url()参数:

  • 第一个参数是网页中的url的正则表达式,用来匹配你输入的网址。
  • 第二个是匹配之后要调用的方法。

include()函数是用来引用其他地方的URL配置文件,这里引用的是polls/urls.py。

我们输入了localhost:8000/polls/,django截取的就是polls/,所以很明显很够匹配到第一个url(),所以会进入polls/urls.py中继续匹配。

我们打开polls/urls.py文件:

from django.conf.urls import url

from . import views

urlpatterns = [

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

]

由于刚刚在mysite/url.py文件中进行了匹配,所以前面的polls/被消耗掉了,这里就没有字符串了,所以第一个^$就是代表的空串,匹配成功,所以会调用views.index方法。

接下来我们看看views文件:

from django.http import HttpResponse

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

可以看到有个方法叫index,且传入了一个request参数。返回的是HttpResponse对象,这就是输出到我们页面的内容啦。

所以我们再把思路理清一下:

  1. 首先根据用户输入的地址,找到mysite/url.py中匹配的url()
  2. 然后调用匹配的方法,也就是url()的第二个参数(这里是polls/views.py中的方法)
  3. 再由方法生成我们看到的html页面。

所以我们写一个html页面话,首先要在views.py中写逻辑,然后在urls.py中配置views.py中的方法。

后记

这就是Django的第一个程序了,希望能够在接下来的几天把官方文档的例子都给大家讲讲,插入一些自己的心得体会。

点赞