• frist Django app — 一、 创建工程


    缘起

    既然python都学了,学习python的时候感觉是相见恨晚,一种新的编程语言带给我一种新的思考问题的方式,为了巩固学过的东西并进一步学习python,就想学学Django,看看会不会带给我关于web新的东西。把自己学习过程记录在这里,发现每次写博客都是对学习过的东西的一次整理和提升。

    新建一个project

    startproject

    python和Django的安装不再详述,我的环境python2.7,Django1.9.7 。

    django-admin startproject mysite

    上面这句话创建了一个project名称位mysite,这个名称是可以修改的,目录结构如下:

    .
    ├── manage.py
    └── mysite
        ├── __init__.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py

    对于上面几个文件的介绍:

    manage.py:与Django进行交互的命令行工具,比如后面根据model生成数据库表结构、供开发使用的server等都是使用该工具,在manage.py的同级目录使用python manage.py 可以看到可以使用的命令列表。

    mysite:这个才是工程的包名。

    __init__.py:表明mysite是一个包。

    setting.py:Django的配置文件,包括工程的app配置、数据库配置、语言配置等。

    urls.py:Django的dispatcher,根据不同的url映射到不同的视图。

    wsgi.py:WSGI是web server gateway interface,这个文件是使project符合这种协议的入口点(entry-point)

    runserver

    python manage.py runserver

    在manage.py的同级目录下运行这个命令就可以看到以下内容:

    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 10, 2016 - 09:20:57
    Django version 1.9.7, using settings 'mysite.settings'
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CONTROL-C.

    说明我们成功创建了一个project,在浏览器中输入 http://127.0.0.1:8000/,看到以下画面表示成功:

    Django自带了一个开发服务器,便于开发使用(Django官方强调不能用作生产环境),默认端口号是8000,如果想运行在别的端口号,以下面的方式运行即可,比如:8080

    python manage.py runserver 8080
    # 如果想在局域网内其他电脑上访问你的站点
    python manage.py runserver 0.0.0.0:8080

    按Ctrl C停止服务器。

    新建一个app

    一个project可以又多个app,一个app可以同时属于多个project。通过以下命令创建一个app(在project目录下)

    django-admin startapp polls

    创建app后的目录结构,因为Django会自动创建一系列文件,我们需要明白每个为文件的作用

    .
    ├── manage.py
    ├── mysite
    │   ├── __init__.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    └── polls
        ├── admin.py
        ├── apps.py
        ├── __init__.py
        ├── migrations
        │   └── __init__.py
        ├── models.py
        ├── tests.py
        └── views.py

    polls:app的根目录

    admin.py:Django自带了一个管理界面,这个文件可以注册model在界面中管理

    __init__.py:表明polls也是一个包

    migrations:用来初始化数据库,在执行python manage.py makemigrations 的时候会自动生成一个文件在这里

    __init__.py:表明migrations也是一个包

    models.py:在这个文件里面定义model类

    tests.py:写测试代码

    views.py:视图,Django映射urls.py里面的url的时候,在views.py里面查找对应的处理方法

    添加view

    编辑views.py文件

    from django.shortcuts import render
    from django.http import HttpResponse
    
    # Create your views here.
    def index(request):
        return HttpResponse("hello world")

    添加映射

    在polls目录下新建urls.py文件

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

    将polls的urls.py告诉django,添加到mysite/urls.py

    from django.conf.urls import url, include
    from django.contrib import admin
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^polls/', include('polls.urls')),
    ]

    将我们polls包下面的urls.py include进去。大家注意到了polls/urls.py相当于是mysite/urls.py下面的一个子文件,两者 的写法相似,url的第一个参数是一个正则表达式,第二个参数就是映射到的视图或者包含的类,注意到原来有一个url(r'^admin/', admin.site.urls),这是Django管理界面的配置,还有就是我们写的正则表达式是以polls/开始的url,也就是所有以该前缀开始的url都会被分发到polls/urls里面进一步寻找对应的视图。

    接下运行server,访问http://127.0.0.1:8000/polls/就可以看到以下内容——也就是我们在views.py里面写的内容

    hello world

    总结

    其实主要就是通过django提供的一些命令我们基本上就完成了一个简单的hello world,说到了Django的目录结构,简单涉及了一些view和url的写法。


    代码位置

    http://pan.baidu.com/s/1hs7ApwS

  • 相关阅读:
    Lua语言基础汇总(9)-- Lua中__index和__newindex实践
    Lua语言基础汇总(8) -- Lua中的元表与元方法
    Lua语言基础汇总(7) -- 协同程序
    Lua语言基础汇总(6)-- 迭代器与泛型for
    Lua语言基础汇总(5) -- 闭包
    【NOIP2005提高组T2】过河-DP+路径压缩
    【NOIP2005提高组T2】过河-DP+路径压缩
    【NOIP2002提高组T2】字串变换-双向BFS或迭代加深搜索
    【NOIP2002提高组T2】字串变换-双向BFS或迭代加深搜索
    【NOIP2001提高组T2】数的划分-DP
  • 原文地址:https://www.cnblogs.com/sunshine-2015/p/5658283.html
Copyright © 2020-2023  润新知