美文网首页
第三节、Django基础

第三节、Django基础

作者: 妄语莫言 | 来源:发表于2018-02-08 15:38 被阅读0次
基础知识

Django是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站!
Web应用框架(Web application framework)是一种开发框架,用来支持动态网站,网络应用程序及网络服务的开发
http服务器:用来接受用户请求,并将请求转发给web应用框架进行处理。Web应用框架处理完以后再发送给http服务器,http服务器再返回给用户。

工具准备

linux + python3 + pycharm + mysql
python3:virtualenv,django,pymysql(虚拟工作环境,django框架,pymsql工具)

#开发环境已配置好,检查环境python3及pip已安装
(py3env) pyvip@vip:~$ python -V
Python 3.5.2
(py3env) pyvip@vip:~$ pip -V
pip 9.0.1 from /home/pyvip/.virtualenvs/py3env/lib/python3.5/site-packages (python 3.5)
#安装Django
(py3env) pyvip@vip:~$  pip install django
创建django项目
#先切换到工作目录下再创建
(py3env) pyvip@vip:~$ ls 
get-pip.py  tk-dj  vim
(py3env) pyvip@vip:~$ cd tk-dj/
(py3env) pyvip@vip:~/tk-dj$  django-admin startproject hello_django
(py3env) pyvip@vip:~/tk-dj$ pwd
/home/pyvip/tk-dj
(py3env) pyvip@vip:~/tk-dj$ tree
.
├── hello_django
│   ├── hello_django
│   │   ├── __init__.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   └── manage.py
└── pytest
    └── ss.py
#manage.py   django中的一个命令行工具
#__init__.py   空文件,告诉python这个目录是python包
#setting.py     配置文件,包含数据库信息,调试标志,静态文件等。
#urls.py          Django项目的URL声明
#wsgi.py        部署服务器用到的
#进入pycharm进行代码同步
开发服务器

因为我们用的是linux上面的环境,所以为了让我们在windows的浏览器上能访问到我们的服务器,那么需要修改setting.py的文件,将里面的ALLOWED_HOSTS = []改成ALLOWED_HOSTS = ['*'],这样才能使我们在本地能访问到我们linux上面的服务器。

#在项目目录下启动服务
(py3env) pyvip@vip:~/tk-dj/hello_django$ ls
hello_django  manage.py
(py3env) pyvip@vip:~/tk-dj/hello_django$ python manage.py  runserver  0:8000
#浏览器直接访问127.0.0.1:8000即可
创建view视图函数并设置对应的访问关系

pycharm的hello_django项目下直接创建views.py

#导入需要的函数方法
from django.http import HttpResponse
#定义函数调用时候返回语句字段
def index(request):
    return HttpResponse('hello django!')

修改urls.py文件,利用正则设置不同字段对应引导页面

#先引用需要的模块
from django.conf.urls import url
from django.contrib import admin
#从当前目录下引用views模块
from . import views
#当对应字段匹配hello/时候调用views.index函数
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^hello/', views.index),
]

访问127.0.0.1:8000/hello得到对应的页面

创建应用app进行不同小项目的分类

在大项目的工作目录下创建app应用小目录

(py3env) pyvip@vip:~/tk-dj/hello_django$ ls
books  db.sqlite3  hello_django  manage.py

(py3env) pyvip@vip:~/tk-dj/hello_django$ python manage.py startapp books
(py3env) pyvip@vip:~/tk-dj/hello_django$ tree
.
├── books
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py

为了方便管理在每个app目录下新建各自专属的url文件,然后在主url文件中include导入即可

URL概念

URL(Uniform Resoure Locator)统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

URL格式
http://127.0.0.1:8000/hello/
URL解释:
schema://host[:port#]/path/.../[?query-string][#anchor]
schema:指定使用的协议(例如:http, https, ftp)
host:Http服务器的IP地址或者域名
port:端口号,http默认是80端口
path:访问资源的路径
query-string:发送给http服务器的数据
anchor:锚点
  • url.py的作用
    URL配置(URLconf)就像是Django所支撑网站的目录。它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表。以这样的方式告诉Django,对于那个URL调用那段代码。url的加载就是从配置文件中开始。
  • url解析过程
    Django会从urlpatterns里顺次读取元素,每个元素是方法url调用后返回的结果。
    django传给url路由要处理的地址,该地址是被去掉主机地址及之后的一个“/”的剩余部分:
    例如: http://127.0.0.1:8000/hello/
    经处理后的剩余部分就是:
    hello/
    然后把该剩余部分与url方法的第一个参数进行正则匹配,如何匹配成功,则执行url的第二个参数指定的方法(该方法一般放在views.py中,主要功能的实现具体业务逻辑)。
    示例:如url:http://127.0.0.1:8000/books/hello
    在主url中先匹配到/books然后到books应用下的url文件中继续匹配/hello
    主url的引用代码
from django.contrib import admin
from django.conf.urls import url,include
from . import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^hello/', views.index),
    url(r'^books/', include('books.urls')),
]

books应用app目录下的url文件匹配代码

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

app应用books目录下的views视图里面代码

from django.http import HttpResponse
def index(request):
    return HttpResponse('hi python!')

此时访问http://127.0.0.1:8000/books/hi/得到hello python页面

将url后面的字段作为参数传递给views视图文件里的函数

主url文件里面利用正则获取需要的字段如下

url(r'^hello/(\w+)/$', views.index),
#这句话意思是将hello/后面的单词作为参数传递给视图文件views里面的index函数
#(\w+)正则表示任意多个字母作为一个整体进行传参
#views文件里代码如下
def index(request,course):
    return HttpResponse('hello %s' % course)
#course接收从url文件里面传递的参数并显示在网页上

访问http://127.0.0.1:8000/hello/java,返回hello java

几种情况下的代码
#url文件匹配规则如下
    # url(r'^hello/python/$', views.hello_python),匹配hello/python/
    # url(r'^hello/php/$', views.hello_php),匹配hello/php/
    # url(r'^hello/(\w+)/$',views.hello_course),匹配hello后面的字段传参
    # url(r'^add/(\d+)/(\d+)/', views.add),匹配2个参数传参
    # url(r'^hello/(?P<name>\w+)/(?P<num>\d+)$',views.hello_django),给后面参数命名
对应的views下的函数方法如下
def hello_python(request):
    return HttpResponse('Hello python!')

def hello_php(request):
    return HttpResponse('Hello php!')

def hello_course(request, course):
    return HttpResponse('Hello %s' % course)

def add(request,a,b):
    c = int(a)+int(b)   #接收的字符串转为整型后运算,不然就是单纯的字符拼接
    return HttpResponse(str(c))

def hello_django(request, name='python', num='001'):#设置默认参数
    return HttpResponse('Hello %s %s' % (name, num))

相关文章

网友评论

      本文标题:第三节、Django基础

      本文链接:https://www.haomeiwen.com/subject/mxwizxtx.html