Django2.2图文教程

栏目: Python · 发布时间: 7年前

内容简介:开发环境:python: 3.7.3 下载地址:

原文链接

1.准备工作

开发环境:

python: 3.7.3 下载地址: https://www.python.org/downlo...

pip: pip3

Django: 2.2 下载地址: https://www.djangoproject.com...

PyCharm: 2017.2 下载地址: https://www.jetbrains.com/pyc...

2.基础知识

1.Python: Python发源于八十年代后期。开发者是Centrum Wiskunde & Informatica的Guido van Rossum,这是位于荷兰阿姆斯特丹科学园区的一个数学和计算机科学研究中心。之后Van Rossum一直是 Python 开发很有影响的人物。事实上,社区成员给了他一个荣誉称号:终生仁慈独裁者(BDFL)。

2.web框架介绍

web框架的概念就像建房子,地基、支撑柱、大梁的骨架还有其他沙石、地板等等材料已经有了,

剩下的就是靠你自己组装起来。犹如积木一样。

Django2.2图文教程

说明:图片来源百度。

Django: Python代表性web框架,

遵循MMVC架构模式的开源框架。

它的名字来自Django Reinhardt,一个法国作曲家和吉他演奏家,很多人认为他是历史上最伟大的吉他演奏家。位于堪萨斯洲的Lawrence城的Lawrence Journal-World报社有两位程序员,Adrian Holovaty和Simon Willison,他们在2003的时候开发出了Django,用于给报纸开发web程序。

其他框架:tornado、flask、webpy

3.实例

Python的和Pycharm的安装忽略,安装比较简单。

1.安装

Mac终端下:

$ pip3 install django # 或 pip3 install django==2.2

Windows是在cmd里面,命令相同。

2.创建项目

打开Pycharm,欢迎页create project,然后

Django2.2图文教程

然后点击create就可以了。

PS:创建项目也可以使用命令这里不做介绍.

django-admin createproject DjangoQuick
django-admin startapp quick

3.项目结构

Django2.2图文教程

4.启动项目

Pycharm菜单栏

Django2.2图文教程

直接点击运行。或者左下角Terminal输入 python3 manage.py runserver

Django2.2图文教程

将会在浏览器看到

Django2.2图文教程

这样表示项目已经启动成功,但是我们没有编写任何代码,所以出现了默认的错误提示。

5.添加视图

打开quick目录下的views.py,输入一下内容

from django.shortcuts import render
from django.http import HttpResponse # 新添加
# Create your views here.

# 新添加
def index(request):
    return HttpResponse('success')

Django2.2图文教程

6.添加url

打开DjangoQuick下的urls.py,修改如下:

from django.contrib import admin
from django.urls import path

from quick.views import index # 导入包

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', index) # 添加新的映射关系
]

Django2.2图文教程

如果使用Pycharm的按钮启动项目,需要点击stop,重新运行,如果在terminal中运行项目,会自动重启。

然后刷新浏览器。

Django2.2图文教程

然后就会看到我们在views.py的index方法中的输出。

7.返回Html(模版)

在quick目录新建templates目录

Django2.2图文教程

然后右键-new-html file, 新建一个index.html文件

Django2.2图文教程

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
这是一个html from:https://litets.com
</body>
</html>

Django2.2图文教程

修改views.py文件

from django.shortcuts import render


def index(request):
    return render(request, 'index.html')

Django2.2图文教程

重启服务器,刷新浏览器将会看到

这是一个html from:https://litets.com

8.静态文件

上面我们已经成功输出了一段html代码,并且成功展示。大家都知html的美化需要依靠css,

css写法有两种:内联式和外联式。内联就不用多说,直接写在html同文件里面就可以了,现在我们使用外联文件改怎么办呢?

在quick目录下新建static/css/style.css文件。

.desc {
    color: red;
}

Django2.2图文教程

然后修改index.html

<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <link rel="stylesheet" href="{% static 'css/style.css' %}">
</head>
<body>

    <div class="desc">
        这是一个html from:https://litets.com
    </div>

</body>
</html>

Django2.2图文教程

刷新浏览器,将会看到字变成红色了。

Django2.2图文教程

9.接收用户数据,处理后返回

修改index.html文件

<div class="desc">
    这是一个html from:https://litets.com
</div>
<!--一下是新添加-->
<form action="/" method="post">
    {% csrf_token %}

    用户名: <input type="text" name="username" placeholder="请输入用户名"> <br>
    密码: <input type="password" name="password" placeholder="请输入密码"> <br>
    <input type="submit" value="提交">
</form>

<!--users来自view中的context-->
{% if users %}
    <table border="1px">
        <tr>
            <td>序号</td>
            <td>用户名</td>
            <td>密码</td>
        </tr>

        {% for user in users %}
            <tr>
                <td>{{ forloop.counter }}</td>
                <td>{{ user.username }}</td>
                <td>{{ user.password }}</td>
            </tr>
        {% endfor %}

    </table>
{% endif %}

Django2.2图文教程

views.py修改

from django.shortcuts import render


def index(request):
    # 判断是否是post请求
    if request.method == 'POST':
        # 获取到请求参数, username的写法,如果username不存在不会抛异常
        # password 会抛异常
        username = request.POST.get('username')
        password = request.POST['password']

        # 业务 需求:
        users = []
        for x in range(0,3):
            users.append(
                {'username': '%s-%d' % (username, x), 'password': '%s-%d' % (password, x)}
            )

        # 返回给用户  模版中使用到的users就是这里传递进去的
        return render(request, template_name='index.html', context={
            'users': users
        })
    return render(request, 'index.html')

Django2.2图文教程

这样我们就实现了一个基本的网站了,但是有一个问题,用户传递过来的数据只是单次有效,无法持久化。

通常一个网站应用到需要持久化数据,比如文件、数据库等。

10.数据库持久化数据

我们打开DjangoQuick目录下的setting.py找到DATEBASES

默认项目使用 sqlite 3最为数据库。还支持 MySQL, PostgreSQL等

Django2.2图文教程

可用的引擎有:

'django.db.backends.sqlite3'
'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.oracle'

Mysql的设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test', # 数据库名称,
        'HOST': 'localhost', # 主机地址
        'USER': 'user', # 数据库用户
        'PASSWORD': 'pwd', # 密码
        'PORT': 3306 # mysql的端口默认3306
    }
}

这里我们使用默认的sqlite3。

打开quick下的models.py

from django.db import models

class User(models.Model):
    
    username = models.CharField(max_length=25)
    password = models.CharField(max_length=18)

Django2.2图文教程

我们增加了两个字段username和password,Django默认支持orm。

同步数据库,在终端中执行

$ python3 manage.py makemigrations

Django2.2图文教程

此命令执行完成后,会在migrations下生产记录models变动的记录。

Django2.2图文教程

此时数据库并未变动,然后执行

$ python3 manage.py migrate

这样models的变动,立即同步到数据库中。

Django2.2图文教程

修改views.py

from django.shortcuts import render

from .models import User

def index(request):
    # 判断是否是post请求
    if request.method == 'POST':
        # 获取到请求参数, username的写法,如果username不存在不会抛异常
        # password 会抛异常
        username = request.POST.get('username')
        password = request.POST['password']
        
        u = User(username=username, password=password)
        u.save()

    # 业务 需求:查询出所有数据
    users = User.objects.all()
    
    # 返回给用户
    return render(request, template_name='index.html', context={
        'users': users
    })

Django2.2图文教程

这样添加用户后就会持久报错了,即使关闭浏览器,重新访问数据也是存在的。

Django2.2图文教程

我们查看db.sqlite3文件查看里面的数据

Django2.2图文教程

原文链接


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP and MySQL Web Development (3rd Edition) (Developer's Library

PHP and MySQL Web Development (3rd Edition) (Developer's Library

Luke Welling、Laura Thomson / Sams / 2004-09-29 / USD 49.99

We've taken the best and made it even better. The third edition of the best-selling PHP and MySQL Web Development has been updated to include material and code on MySQL 5, PHP 5 and on PHPs object mod......一起来看看 《PHP and MySQL Web Development (3rd Edition) (Developer's Library》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器