前言
最近要搞一个比赛,技术大神说要用python作为后端,并且采用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
就可以看到版本号啦
开始第一个例子
-
创建我们的工程目录,一行命令就够了:
django-admin startproject mysite
然后我们的目录结构会是这样:
mysite/ manage.py mysite/ __init__.py settings.py urls.py wsgi.py
第一个mysite是根目录,叫什么无关紧要。
里面的manage.py是命令行的工具,能够让你管理这个项目。
然后是mysite/目录,这是一个python包目录。
-
运行服务
在第一个mysite目录下,输入:
python manage.py runserver
然后在浏览器输入:http://127.0.0.1:8000/
然后你会看到It worked!等文字,说明已经部署好了。
-
创建一个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对象,这就是输出到我们页面的内容啦。
所以我们再把思路理清一下:
- 首先根据用户输入的地址,找到mysite/url.py中匹配的url()
- 然后调用匹配的方法,也就是url()的第二个参数(这里是polls/views.py中的方法)
- 再由方法生成我们看到的html页面。
所以我们写一个html页面话,首先要在views.py中写逻辑,然后在urls.py中配置views.py中的方法。
后记
这就是Django的第一个程序了,希望能够在接下来的几天把官方文档的例子都给大家讲讲,插入一些自己的心得体会。
入门例子2