被解放的姜戈01 初试天涯

被解放的姜戈01 初试天涯

本系类教程基本转载 部分原创以下原创作者

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

Django是Python下的一款网络服务器框架。Python下有许多款不同的框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。虽然Django之于Python,达不到Rail之于Ruby的一统江湖的地位,但Django无疑也是Python在网络应用方面的一位主将。

被解放的姜戈01 初试天涯

向昆汀的致敬,“被解放的姜戈”

Django意外的和昆汀的电影重名。这大大提高了Django的知名度。另外利用电影,宣传了这个奇怪的词的发音。

下面是姜戈的初体验。 

安装Django

博主采用了Pycharm5.0.3 专业版 配合python3.4.3 Django1.9.5 进行开发由于 原博主文章年代久远(夸张一下)版本差别较大 故在实际操作(按原博主教程)过程中产生较多问题,So 博主学此文 救济下后面的同学。

pycharm 5.0.3 专业版 (这个版本问题不大 IDE 而已)(有钱的掏钱激活,没钱的自行百度破解 =   ! = )

python 3.4.3 (版本最好一样 现在最新貌似有3.5的 )

mysql (官网直接下最新的 博主是5.7.11)

一些扩展安装(Django ,Pymsql 等 直接在pycharm 中装)

黑夜中,姜戈和镣铐说再见。

启动

打开pycharm  新建django项目 左侧选择(django)

点开more settings 自行加上application name 点击create 就Ok了!

文件结构(博主第一次发文 图片不知道怎么弄进来将就看吧 =  = )

项目名------

        项目名----------

                init

                settings

                urls

                wsgi

        application name---------------(博主的是 scc)

                migrations--------

                       init

                 init

                 admin

                 apps

                 model

                 tests

                 views

         templates

         db.sqlite3

         manage.py

----------------------------------------------------------------------------

打开浏览器,访问http://127.0.0.1:8000,可以看到服务器已经在运行:

被解放的姜戈01 初试天涯

虽然有一个能跑的服务器,但什么内容都没有。

“赏金?猎人?” 姜戈满脸困惑。

第一个网页

在http协议中可以看到,网络服务器是“请求-回应”的工作模式。客户向URL发送请求,服务器根据请求,开动后厨,并最终为客人上菜。Django采用的MVC结构,即点单、厨房、储藏室分离。

我们需要一个指挥员,将URL对应分配给某个对象处理,这需要在urls.py设定。Python会根据该程序,将URL请求分给某个厨师。

将urls.py修改为:

被解放的姜戈01 初试天涯
from django.conf.urls import  url

from django.contrib import admin
from scc import views urlpatterns =[ url(r'^admin/', admin.site.urls), url(r'^$', views.first_page), ]
被解放的姜戈01 初试天涯

我们添加了最后一行。它将根目录的URL分配给一个对象进行处理,这个对象是scc.views.first_page。

用以处理HTTP请求的这一对象还不存在,我们在views.py,在其中定义first_page函数:

from django.http import HttpResponse

def first_page(request):
    return HttpResponse("<p>世界好</p>")

第一行说明字符编码为utf-8,为下面使用中文做准备。first_page函数的功能,是返回http回复,即这里的<p>世界好</p>。first_page有一个参数request,该参数包含有请求的具体信息,比如请求的类型等,这里并没有用到。

页面效果如下:

被解放的姜戈01 初试天涯

姜戈接过枪,一枪射出去。“天哪!” 德国人惊呆了。 

增加app(博主感觉就是 http://xxxx.xxx/xx/nn  就加个/nn 在原先/xx 的基础上, 和/xx原理相同)

一个网站可能有多个功能。我们可以在Django下,以app为单位,模块化的管理,而不是将所有的东西都丢到一个文件夹中。

我们还需要修改项目设置,说明我们要使用scc。在setting.py中,在INSTALLED_APPS中,增加"scc":

被解放的姜戈01 初试天涯
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'scc',
)
被解放的姜戈01 初试天涯

可以看到,除了新增加的scc,Django已经默认加载了一些功能性的app,比如用户验证、会话管理、显示静态文件等。我们将在以后讲解它们的用途。

姜戈看到曾经的工头们,眼中充满怒火。

增加APP页面

我们下面为APP增加首页。我们之前是在mysite/urls.py中设置的URL访问对象。依然采用类似的方式设置。

另一方面,为了去耦合,实现模块化,我们应该在scc/second_url.py中设置URL访问对象。具体如下:

在scc 目录下新建 second_url 

首先,修改mysite/urls.py:

被解放的姜戈01 初试天涯
from django.conf.urls import  url,include

from django.contrib import admin
from scc import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views.first_page),
    url(r'^scc/', include('scc.second_url')),
]
被解放的姜戈01 初试天涯

注意新增加的最后一行。这里,我们提醒指挥员,对于scc/的访问,要参考scc/second_url.py。

second_url更改内容为:

from django.conf.urls import url,include
from django.contrib import admin
from scc import views

urlpatterns = [
url(r'^$',views.first_page_1),
]

将URL对应scc下,views.py中的first_page_1函数。

最后,在scc下,修改views.py为:

from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse

def first_page(request):
return HttpResponse("<p>世界好</p>")
def first_page_1(request):
return HttpResponse("<p>good</p>")

访问http://127.0.0.1:8000/west,查看效果。

“你们这些混蛋,我一个都不会放过!” 姜戈大吼。

总结

可以看到,Django的创建过程非常简单。但这只是初次尝试Django。为了创建一个完整功能的网站,还需要调用Django许多其它的功能。

姜戈的解放,才刚刚开始。

欢迎阅读“被解放的姜戈”系列文章。