2. 搭建简单的服务环境——Django

Django 自带的用于开发的简易服务器,是一个用纯 Python 写的轻量级的 Web 服务器。这个服务器内置在 Django 中是为了能快速的开发,省略简化了配置生产级别的服务器(比如 Apache)方面的工作。不要将这个服务器用于和生产环境相关的任何地方**。这个服务器只是为了开发而设计的。**

1. 创建项目
(python3.8) [root@node8 python-project]# django-admin.py startproject mysite
2. 项目结构
(python3.8) [root@node8 python-project]# cd mysite/
(python3.8) [root@node8 mysite]# ls
manage.py  mysite
(python3.8) [root@node8 mysite]# tree

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

1 directory, 5 files

HelloWorld: 项目的容器。
manage.py: 命令行工具。
HelloWorld/init.py: Python 包空文件。
HelloWorld/asgi.py: ASGI 兼容的 Web 服务器的入口。
HelloWorld/settings.py: 项目的设置/配置。
HelloWorld/urls.py: 路由文件
HelloWorld/wsgi.py: WSGI 兼容的 Web 服务器的入口。

3. 启动服务器
(python3.8) [root@node8 mysite]# python3 manage.py runserver 0:8000

报错,报sqlite版本太低

[root@node8 soft]# sqlite3 --version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668
[root@node8 soft]#  wget https://www.sqlite.org/2019/sqlite-autoconf-3270200.tar.gz
[root@node8 soft]#  tar -zxvf sqlite-autoconf-3270200.tar.gz && cd sqlite-autoconf-3270200
[root@node8 sqlite-autoconf-3270200]# ./configure --prefix=/usr/local && make  && make install
[root@node8 sqlite-autoconf-3270200]# find /usr/ -name sqlite3
/usr/bin/sqlite3
/usr/lib/python2.7/site-packages/django/db/backends/sqlite3
/usr/lib64/python2.7/sqlite3
/usr/share/bash-completion/completions/sqlite3
/usr/local/bin/sqlite3
[root@node8 sqlite-autoconf-3270200]#  /usr/bin/sqlite3 --version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668
[root@node8 sqlite-autoconf-3270200]# /usr/local/bin/sqlite3 --version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7
[root@node8 sqlite-autoconf-3270200]# mv /usr/bin/sqlite3  /usr/bin/sqlite3_old
[root@node8 sqlite-autoconf-3270200]# ln -s /usr/local/bin/sqlite3   /usr/bin/sqlite3
[root@node8 sqlite-autoconf-3270200]# sqlite3 --version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7
[root@node8 sqlite-autoconf-3270200]# vim ~/.bashrc 
export LD_LIBRARY_PATH="/usr/local/lib"
[root@node8 sqlite-autoconf-3270200]# source  ~/.bashrc 
(python3.8) [root@node8 mysite]# python3 manage.py runserver 0:8000
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

July 20, 2020 - 10:26:15
Django version 3.0.6, using settings 'mysite.settings'
Starting development server at http://0:8000/
Quit the server with CONTROL-C
3. 创建投票应用

项目 VS 应用
项目和应用有什么区别?应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者小型的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。
在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定。Django 自带一个工具,可以帮你生成应用的基础目录结构,这样你就能专心写代码,而不是创建目录了

(python3.8) [root@node8 mysite]# python manage.py startapp polls
(python3.8) [root@node8 mysite]# ls
db.sqlite3  manage.py  mysite  polls
(python3.8) [root@node8 mysite]# cd polls/
(python3.8) [root@node8 polls]# tree 
.
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
└── views.py
4. 编写视图
(python3.8) [root@node8 polls]# pwd
/blueicex/python-project/mysite/polls
(python3.8) [root@node8 polls]# ls
admin.py  apps.py  __init__.py  migrations  models.py  tests.py  views.py
(python3.8) [root@node8 polls]# vim views.py 
from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")
# Create your views here.
5. 为视图创建路由文件 urls.py
(python3.8) [root@node8 polls]# pwd
/blueicex/python-project/mysite/polls
(python3.8) [root@node8 polls]# ls
admin.py  apps.py  __init__.py  migrations  models.py  tests.py  views.py
(python3.8) [root@node8 polls]# vim views.py 
(python3.8) [root@node8 polls]# touch  urls.py 
(python3.8) [root@node8 polls]# vim urls.py 
from . import views
from django.urls import path
urlpatterns = [
    path('', views.index, name='index'),  #must is name='index'
]

path() 可以接收四个参数,必选参数:route、view, 可选参数:kwargs、name。
path() 参数: route
route 是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。

这些准则不会匹配 GET 和 POST 参数或域名。例如,URLconf 在处理请求 https://www.example.com/myapp/ 时,它会尝试匹配 myapp/ 。处理请求 https://www.example.com/myapp/?page=3 时,也只会尝试匹配 myapp/。

path() 参数: view
当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。

path() 参数: kwargs
任意个关键字参数可以作为一个字典传递给目标视图函数。

path() 参数: name
为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。

6. 将app路由包含到project路由中
(python3.8) [root@node8 mysite]# cd mysite/
(python3.8) [root@node8 mysite]# ls
asgi.py  __init__.py  __pycache__  settings.py  urls.py  views.py  wsgi.py
(python3.8) [root@node8 mysite]# pwd
/blueicex/python-project/mysite/mysite
(python3.8) [root@node8 mysite]# vim urls.py 

"""mysite URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/3.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('polls/', include('polls.urls')),
    ]
7. 验证polls app
(python3.8) [root@node8 mysite]# python manage.py runserver 0:8080
July 20, 2020 - 10:55:11
Django version 3.0.6, using settings 'mysite.settings'
Starting development server at http://0:8080/
Quit the server with CONTROL-C.
(python3.8) [root@node8 mysite]# vim settings.py 
DEBUG = True
ALLOWED_HOSTS = ['192.168.0.81']

在这里插入图片描述
————Blueicex 2020/07/20 18:59 blueice1980@126.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值