“Linux上创建第一个Django 项目”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
 
(未显示2个用户的6个中间版本)
第6行: 第6行:
 
     Django 2.1.7
 
     Django 2.1.7
  
 +
==准备工作==
 +
===selinux配置===
 +
(关闭高级安全功能)
 +
 +
修改配置文件:永久生效,但是需重启;执行setenforce 0 立即生效
 +
 +
<nowiki>[root@controller ~]# sed -i 's/SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config 永久性生效
 +
 +
或者用vi /etc/selinux/config把配置改成如下配置,其余项不变:
 +
 +
  SELINUX=permissive
 +
 +
[root@controller ~]# getenforce
 +
Enforcing
 +
[root@controller ~]# setenforce 0  仅当前生效
 +
[root@controller ~]# getenforce
 +
Permissive</nowiki>
 +
修改配置文件永久生效 需要重启
 +
执行setenforce 0 立即生效
 +
 +
===关闭防火墙===
 +
 +
<nowiki>[root@controller ~]# systemctl stop iptables  //暂时性关闭
 +
[root@controller ~]# systemctl disable iptables  //永久性关闭
 +
Removed symlink /etc/systemd/system/basic.target.wants/iptables.service.
 +
[root@controller ~]# systemctl  stop firewalld.service
 +
[root@controller ~]# systemctl  disable  firewalld.service
 +
</nowiki>
 
==Django 管理工具==
 
==Django 管理工具==
  
第27行: 第55行:
  
 
==创建第一个项目==
 
==创建第一个项目==
 +
[root@localhost Python-3.7.5]# cd ~
  
使用 django-admin 来创建 HelloWorld 项目:
+
使用 django-admin 来创建 welcome项目:
  
  django-admin startproject HelloWorld
+
  django-admin startproject welcome
  
 
创建完成后我们可以查看下项目的目录结构:
 
创建完成后我们可以查看下项目的目录结构:
  
  <nowiki>$ cd HelloWorld/
+
  <nowiki>$ cd welcome/
 
$ yum install tree
 
$ yum install tree
 
$ tree
 
$ tree
 
.
 
.
|-- HelloWorld
+
├── manage.py
|  |-- __init__.py
+
└── welcome
|  |-- settings.py
+
    ├── __init__.py
|  |-- urls.py
+
    ├── settings.py
|  `-- wsgi.py
+
    ├── urls.py
`-- manage.py</nowiki>
+
    └── wsgi.py
 +
 
 +
1 directory, 5 files
 +
</nowiki>
  
 
目录说明:
 
目录说明:
  
     HelloWorld: 项目的容器。
+
     welcome: 项目的容器。
     manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
+
     manage.py: 项目的主文件,类似于C++的main文件,可用来执行与项目相关的一些重要命令,如项目的启动、数据库的同步等。
     HelloWorld/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
+
     welcome/__init__.py: 一个空文件,主要用来表明当前目录是一个 Python 包。
     HelloWorld/settings.py: 该 Django 项目的设置/配置。
+
     welcome/settings.py: 整个项目的全局配置文件。
     HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
+
     welcome/urls.py: 网络访问的页面映射文件,创建的Web项目下所有的页面路由都需要在该文件中配置。
     HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
+
     welcome/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,一般不需要做任何修改。
  
接下来我们进入 HelloWorld 目录输入以下命令,启动服务器:
+
接下来我们进入 welcome 目录输入以下命令,启动服务器:
  
 
python3 manage.py runserver 0.0.0.0:8000
 
python3 manage.py runserver 0.0.0.0:8000
第60行: 第92行:
 
0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000。
 
0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000。
  
在HelloWorld/settings.py中下面这一项添加允许访问的IP地址:
+
在Welcome/settings.py中下面这一项添加允许访问的IP地址:
  
 
  ALLOWED_HOSTS = ['10.0.0.30']
 
  ALLOWED_HOSTS = ['10.0.0.30']
第70行: 第102行:
 
[[文件:python9-14.png|700px]]
 
[[文件:python9-14.png|700px]]
  
==视图和 URL 配置==
+
最终可以在终端通过Ctrl+C组合键来关闭项目运行。
 
 
在先前创建的 HelloWorld 目录下的 HelloWorld 目录新建一个 view.py 文件,并输入代码:
 
 
 
HelloWorld/HelloWorld/view.py 文件代码:
 
 
 
<nowiki>from django.http import HttpResponse
 
 
def hello(request):
 
    return HttpResponse("Hello world ! ")</nowiki>
 
 
 
接着,绑定 URL 与视图函数。打开 urls.py 文件,删除原来代码,将以下代码复制粘贴到 urls.py 文件中:
 
 
 
HelloWorld/HelloWorld/urls.py 文件代码:
 
 
 
<nowiki>from django.conf.urls import url
 
 
from . import view
 
 
urlpatterns = [
 
    url(r'^$', view.hello),
 
]</nowiki>
 
 
 
整个目录结构如下:
 
 
 
tree
 
  
<nowiki>.
 
|-- HelloWorld
 
|  |-- __init__.py
 
|  |-- __init__.pyc
 
|  |-- settings.py
 
|  |-- settings.pyc
 
|  |-- urls.py              # url 配置
 
|  |-- urls.pyc
 
|  |-- view.py              # 添加的视图文件
 
|  |-- view.pyc            # 编译后的视图文件
 
|  |-- wsgi.py
 
|  `-- wsgi.pyc
 
`-- manage.py</nowiki>
 
  
完成后,启动 Django 开发服务器,并在浏览器访问打开浏览器并访问:
 
 
[[文件:python9-15.png]]
 
 
我们也可以修改以下规则:
 
 
HelloWorld/HelloWorld/urls.py 文件代码:
 
 
<nowiki>from django.urls import path
 
 
from . import view
 
 
urlpatterns = [
 
    path('hello/', view.hello),
 
]</nowiki>
 
 
通过浏览器打开 http://10.0.0.30:8000/hello,输出结果如下:
 
 
[[文件:python9-16.png]]
 
 
注意:项目中如果代码有改动,服务器会自动监测代码的改动并自动重新载入,所以如果你已经启动了服务器则不需手动重启。
 
===path() 函数===
 
 
Django path() 可以接收四个参数,分别是两个必选参数:route、view 和两个可选参数:kwargs、name。
 
语法格式:
 
 
path(route, view, kwargs=None, name=None)
 
 
*route: 字符串,表示 URL 规则,与之匹配的 URL 会执行对应的第二个参数 view。
 
 
*view: 用于执行与正则表达式匹配的 URL 请求。
 
 
*kwargs: 视图使用的字典类型的参数。
 
 
*name: 用来反向获取 URL。
 
  
 
参考文档:
 
参考文档:
  
 
[1] https://www.runoob.com/django/django-first-app.html
 
[1] https://www.runoob.com/django/django-first-app.html
 
 
 
 
 
执行python3 manage.py runserver 0.0.0.0:8000尾行报错:django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
 
解决方法:
 
#更新SQLite 3
 
#获取源代码(在主目录中运行)
 
[root@djangoServer ~]# cd ~
 
 
[root@djangoServer ~]# wget https://www.sqlite.org/2019/sqlite-autoconf-3270200.tar.gz
 
 
[root@djangoServer ~]# tar -zxvf sqlite-autoconf-3270200.tar.gz
 
 
 
#构建并安装
 
 
[root@djangoServer ~]# cd sqlite-autoconf-3270200
 
 
[root@djangoServer sqlite-autoconf-3270200]# ./configure --prefix=/usr/local
 
 
[root@djangoServer sqlite-autoconf-3270200]# make && make install
 
 
[root@djangoServer sqlite-autoconf-3270200]# find /usr/ -name sqlite3
 
 
/usr/bin/sqlite3
 
 
/usr/lib64/python2.7/sqlite3
 
 
/usr/local/bin/sqlite3
 
 
/usr/local/python3/lib/python3.7/site-packages/django/db/backends/sqlite3
 
 
/usr/local/python3/lib/python3.7/sqlite3
 
 
[root@djangoServer sqlite-autoconf-3270200]#
 
 
 
#不必要的文件,目录删除
 
 
[root@djangoServer sqlite-autoconf-3270200]# cd ~
 
 
[root@djangoServer ~]# ls
 
 
 
anaconda-ks.cfg  sqlite-autoconf-3270200  sqlite-autoconf-3270200.tar.gz
 
 
[root@djangoServer ~]#
 
 
[root@djangoServer ~]# rm -rf sqlite-autoconf-3270200.tar.gz
 
 
[root@djangoServer ~]# rm -rf sqlite-autoconf-3270200
 
 
 
#检查版本
 
 
## 最新安装的sqlite3版本
 
 
[root@djangoServer ~]# /usr/local/bin/sqlite3 --version
 
 
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7
 
 
 
[root@djangoServer ~]#
 
 
 
## Centos7自带的sqlite3版本
 
 
[root@djangoServer ~]# /usr/bin/sqlite3 --version
 
 
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668
 
 
[root@djangoServer ~]#
 
 
 
 
## 可以看到sqlite3的版本还是旧版本,那么需要更新一下。
 
 
[root@djangoServer ~]# sqlite3 --version
 
 
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668
 
 
[root@djangoServer ~]#
 
 
## 更改旧的sqlite3
 
 
[root@djangoServer ~]# mv /usr/bin/sqlite3  /usr/bin/sqlite3_old
 
 
 
 
## 软链接将新的sqlite3设置到/usr/bin目录下
 
 
[root@djangoServer ~]# ln -s /usr/local/bin/sqlite3  /usr/bin/sqlite3
 
 
 
## 查看当前全局sqlite3的版本
 
 
[root@djangoServer ~]# sqlite3 --version
 
 
 
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7
 
 
 
[root@djangoServer ~]#
 
 
 
 
#将路径传递给共享库
 
 
# 设置开机自启动执行,可以将下面的export语句写入 ~/.bashrc 文件中,如果如果你想立即生效,可以执行source 〜/.bashrc 将在每次启动终端时执行
 
 
[root@djangoServer ~]# export LD_LIBRARY_PATH="/usr/local/lib"
 
 
#检查Python的SQLite3版本
 
 
[root@djangoServer ~]# python3
 
 
Python 3.7.1 (default, May  3 2019, 09:55:04)
 
 
Type 'copyright', 'credits' or 'license' for more information
 
 
IPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help.
 
 
In [1]: import sqlite3                                                   
 
 
In [2]: sqlite3.sqlite_version                                           
 
Out[2]: '3.27.2'
 
 
In [3]: exit
 

2021年4月21日 (三) 03:19的最新版本

本章我们将介绍Django 管理工具及如何使用 Django 来创建项目,第一个项目我们以 HelloWorld 来命令项目。

测试版本说明:

   Python 3.6.0
   Django 2.1.7

准备工作

selinux配置

(关闭高级安全功能)

修改配置文件:永久生效,但是需重启;执行setenforce 0 立即生效

[root@controller ~]# sed -i 's/SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config 永久性生效

或者用vi /etc/selinux/config把配置改成如下配置,其余项不变:

  SELINUX=permissive

[root@controller ~]# getenforce
Enforcing
[root@controller ~]# setenforce 0  仅当前生效
[root@controller ~]# getenforce
Permissive

修改配置文件永久生效 需要重启 执行setenforce 0 立即生效

关闭防火墙

[root@controller ~]# systemctl stop iptables  //暂时性关闭
[root@controller ~]# systemctl disable iptables   //永久性关闭
Removed symlink /etc/systemd/system/basic.target.wants/iptables.service.
[root@controller ~]# systemctl  stop firewalld.service
[root@controller ~]# systemctl  disable  firewalld.service 

Django 管理工具

安装 Django 之后,您现在应该已经有了可用的管理工具 django-admin。我们可以使用 django-admin 来创建一个项目:

我们可以来看下django-admin 的命令介绍:

[root@localhost ~]# django-admin

Type 'django-admin help <subcommand>' for help on a specific subcommand.

Available subcommands:

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata

创建第一个项目

[root@localhost Python-3.7.5]# cd ~

使用 django-admin 来创建 welcome项目:

django-admin startproject  welcome

创建完成后我们可以查看下项目的目录结构:

$ cd  welcome/
$ yum install tree
$ tree
.
├── manage.py
└── welcome
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

1 directory, 5 files

目录说明:

   welcome: 项目的容器。
   manage.py: 项目的主文件,类似于C++的main文件,可用来执行与项目相关的一些重要命令,如项目的启动、数据库的同步等。
   welcome/__init__.py: 一个空文件,主要用来表明当前目录是一个 Python 包。
   welcome/settings.py: 整个项目的全局配置文件。
   welcome/urls.py: 网络访问的页面映射文件,创建的Web项目下所有的页面路由都需要在该文件中配置。
   welcome/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,一般不需要做任何修改。

接下来我们进入 welcome 目录输入以下命令,启动服务器:

python3 manage.py runserver 0.0.0.0:8000

0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000。

在Welcome/settings.py中下面这一项添加允许访问的IP地址:

ALLOWED_HOSTS = ['10.0.0.30']

这里把Linux服务器的本机IP设上即可。

在浏览器输入你服务器的 ip(这里我们输入本机 IP 地址: 10.0.0.30:8000) 及端口号,如果正常启动,输出结果如下:

Python9-14.png

最终可以在终端通过Ctrl+C组合键来关闭项目运行。


参考文档:

[1] https://www.runoob.com/django/django-first-app.html