Django入门(一)

跟书《python编程:从入门到实践》,学习用Django编写名为“学习笔记”的Web应用程序。

建立项目

项目路径:learning_log

  • 安装python3.7:

此处省略,参考这里:https://blog.csdn.net/miss1181248983/article/details/90779786

  • 建立虚拟环境:
# cd /opt/

# mkdir learning_log && cd learning_log

# python -m venv 11_env
  • 激活虚拟环境:
# source ll_env/bin/activate

进入虚拟环境终端。

要停止使用虚拟环境,可执行:

# deactivate
  • 安装Django:
# pip3 install Django

Django仅在虚拟环境处于活动状态时才可用。

下面与书中不同部分是由于Django版本更新导致,照着操作即可。本人Django版本为2.2.3,可通过命令python -m django --version查看Django版本。

  • 在Django中创建项目:
# django-admin.py startproject learning_log .

# ls
learning_log  ll_env  manage.py

# ls learning_log/
__init__.py  settings.py  urls.py  wsgi.py

Django新建了一个名为learning_log的目录。它还创建了一个名为manage.py的文件,这是一个简单的程序,它接受命令并将其交给Django的相关部分去运行。

目录learning_log包含4个文件,其中最重要的是settings.pyurls.pywsgi.py

文件settings.py指定Django如何与你的系统交互以及如何管理项目。
文件urls.py告诉Django应创建哪些网页来响应浏览器请求。
文件wsgi.py帮助Django提供它创建的文件,这个文件名是web server gateway interface(Web服务器网关接口)的首字母缩写。

  • 创建数据库:
# python manage.py migrate

报错:

django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

查看系统的sqlite3版本:

# sqlite3 --version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668

系统自带的sqlite3版本比较低,需要更新版本。

  • 更新sqlite3版本:
#下载安装
# cd /software

# wget https://www.sqlite.org/2019/sqlite-autoconf-3270200.tar.gz

# tar -zxf sqlite-autoconf-3270200.tar.gz

# cd sqlite-autoconf-3270200

# ./configure --prefix=/usr/local/

# make && make install
#更换版本
# find /usr -name sqlite3

/usr/bin/sqlite3
/usr/lib64/python2.7/sqlite3
/usr/local/bin/sqlite3
/usr/python/lib/python3.7/sqlite3

# /usr/local/bin/sqlite3 --version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7

# mv /usr/bin/sqlite3 /usr/bin/sqlite3.bak

# ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3

# sqlite3 --version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7
#路径传递给共享库
# echo 'export LD_LIBRARY_PATH="/usr/local/lib"' >> ~/.bashrc

# source !$

# cd /opt/learning_log/

# rm -rf /software/sqlite-autoconf-3270200*
  • 继续创建数据库:
# python manage.py migrate

# ls
db.sqlite3  learning_log  ll_env  manage.py
  • 查看项目:

对于虚拟机环境,建议指定本机IP和端口,否则默认是127.0.0.1:8000,浏览器会无法访问。

# python manage.py runserver 192.168.30.128:8000

# vim learning_log/settings.py
ALLOWED_HOSTS = ['192.168.30.128']              #允许主机中,添加本机IP或*(任意主机)

Django启动一个服务器,让你能够查看系统中的项目,了解它们的工作情况。当你在浏览器中输入URL以请求网页时,该Django服务器将进行响应:生成合适的网页,并将其发送给浏览器。

打开浏览器,输入192.168.30.128:8000访问Django项目,如下图:

在这里插入图片描述


创建应用程序

应用路径:learning_logs

Django项目由一系列应用程序组成,它们协同工作,让项目成为一个整体。我们暂时只创建一个应用程序,它将完成项目的大部分工作。


激活虚拟环境

虚拟机再打开一个终端

# cd /opt/learning_log/

# source ll_env/bin/activate
# python manage.py startapp learning_logs

# ls
db.sqlite3  learning_log  learning_logs  ll_env  manage.py

# ls learning_logs/
admin.py  apps.py  __init__.py  migrations  models.py  tests.py  views.py

上面新增了learning_logs目录,其中models.py用来定义我们要在应用程序中管理的数据。


定义模型
# vim learning_logs/models.py
from django.db import models

class Topic(models.Model):
    """用户学习的主题"""
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        """返回模型的字符串表示"""
        return self.text

创建了一个名为Topic的类,它继承了Model——Django中一个定义了模型基本功能的类。Topic类只有两个属性:textdate_added

属性text是一个CharField——由字符或文本组成的数据,需要存储少量的文本,如名称、标题或城市时,可使用CharField。定义CharField属性时,需要告诉Django该在数据库中预留多少空间,这里设置为200个字符。

属性date_added是一个DateTimeField——记录日期和时间的数据。传递了实参auto_add_now=True,每当用户创建新主题时,这都让Django将这个属性自动设置成当前日期和时间。


激活模型

要使用模型,必须让Django将应用程序包含到项目中。

# vim learning_log/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 我的应用程序
    'learning_logs',                #增加该行
]

还需要让Django修改数据库,使其能够存储于模型Topic相关的信息。

# python manage.py makemigrations learning_logs

# python manage.py migrate

在这里,Django确认为learning_logs 应用迁移时一切OK。

每当需要修改项目管理的数据时,都采取如下三个步骤:

  1. 修改models.py
  2. learning_logs调用makemigrations
  3. 让Django迁移项目。

Django管理网站
  • 创建超级用户:Django允许创建具备所有权限的用户——超级用户。
# python manage.py createsuperuser

Username (leave blank to use 'root'): ll_admin              #自定义用户名
Email address:              #可为空
Password:               #自定义密码,不小于8位
Password (again): 
Superuser created successfully.
  • 向管理网站注册模型:非自动创建的模型需要手工注册。
# vim learning_logs/admin.py
from django.contrib import admin

from learning_logs.models import Topic

admin.site.register(Topic)

导入我们要注册的模型Topic,让Django通过管理网站管理我们的模型。使用超级用户访问管理网站:192.168.30.128:8000/admin/

  • 14
    点赞
  • 149
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值