Python 基础知识

365 阅读6分钟

Python 基础知识

  • 第一个Python 程序
print("hello world")
print("what is your name")
# 这个函数,可以把键盘中输入的数据拿过来赋给一个变量
myName = input()
print("nice tou meet you," + myName)
print("the length of your name is" + str(myName))
print("what is your age")
# 输入的年龄是个字符串
myAge = input()
print("you will be," + str(int(myAge) + 1) + ",in next year")
  • 顺序执行,再加点条件分支的小料
num1, num2 = input("enter 2 numbers").split()
num1 = int(num1)
num2 = int(num2)

sum = num1 + num2
difference = num1 - num2
product = num1 * num2
quotient = num1 / num2
remainder = num1 % num2

print("{} + {}={}".format(num1, num2, sum))
print("{} - {}={}".format(num1, num2, difference))
print("{} * {}={}".format(num1, num2, product))
print("{} / {}={}".format(num1, num2, quotient))
print("{} % {}={}".format(num1, num2, remainder))

if-esle 条件:

name = "Bob"
age = 3000

if name == "Alice":
    print("Hi Alice")

elif age < 12:
    print("You are not Alice,kiddo.")

elif age > 2000:
    print("Unlike you,Alice is not an undead,immortal vampire")

elif age > 100:
    print("You are not Alice,gim")

Django 基础

Django 简介

Django本质上就是一个Web框架。我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端。 这样我们就可以自己实现Web框架了。

Django作为一个Python的高级Web框架,功能非常强大,其自身封装了大量底层逻辑,并实现了ORM,同时,MVT结构保证了代码结构的完整性,这一切给了开发人员巨大的便利,让Web开发变得高效且简洁。

Django的基本命令

  • django-admin 命令提示
  • startproject 创建项目
  • startapp 创建应用
  • check 校验项目完整性
  • runserver 本地简易运行项目
  • shell 进入项目的Python Shell 环境
  • test 执行Django用例测试
  • makemigrations 创建模型变更的迁移文件(数据库相关)
  • migrate 执行上一个命令创建的迁移文件(数据库相关)
  • dumpdata 把数据库数据导出到文件(数据库相关)
  • loaddata 把文件数据导入到数据库(数据库相关)

Django项目 VS Django应用

  • 一个Django项目就是一个基于Django的Web应用
  • 一个Django应用就是一个可重用的Python软件包
  • 每个应用可以自己管理模型、视图、模板、路由和静态文件等
  • 一个Django项目包含一组配置和若干个Django应用

项目示例

Django项目初体验

初识Django项目

项目目录介绍

  • settings.py 项目配置文件
  • urls.py 项目路由配置文件
  • manage.py 项目管理文件(入口)
  • wsgi.py Python服务器网关接口

应用目录介绍

  • migrations 数据移植(迁移)模块
  • apps.py 声明应用的地方
  • tests.py 编写应用测试用例的地方(自动化测试模块)
  • urls.py (自行创建)管理应用路由的地方
  • views.py 视图处理的地方(代码逻辑处理的主要地点)
  • models.py 定义应用模型的地方(数据模块,使用ORM框架)
  • admin.py 定义Admin模块管理对象的地方(后台管理系统配置)

应用层次的路由配置 新建一个urls.py文件

# 引入刚写的视图文件
import blog.views
# 或者这样引入
# from . import views
# fron blog import views
# import blog.views as bv

# 路由的配置
urlpatterns = [
    path("hello world", blog.views.hello_world)
]

项目层次的路由配置 urls.py文件

from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path("blog/", include("blog.urls"))
]

把创建的应用添加到配置文件里面 settings.py

INSTALLED_APPS = [
    # myapp
    'blog.apps.BlogConfig'

开发第一个template

  • 在项目的配置文件中注册应用
  • 在应用的根目录下,创建名叫templates的目录
  • 在该目录下创建HTML文件
  • 在views.py中返回render()
def hello(request):
    return render(request, 'index.html', {"name": "HTML"})

将数据库中的数据渲染到模板中:

def get_index_page(request):
    article = models.Artical.objects.get(pk=1)
    return render(request, "index.html", {
        "article": article
    })

模型层简介

模型层是什么

  • 通常,一个Model对应数据库的一张数据表
  • Django中Models以的形式表现
  • 它包含了一些基本字段以及数据的一些行为

在 Django中,我们以创建类的形式来创建数据表,因此,我们在编写代码的过程中,我们所有对数据库的操作,事实上都是对类以及类的对象进行操作,我们不需要写任何SQL语句,来和数据库直接进行代码上的操作。那这种方式,或者叫结构、框架就叫ORM。它当然不是Django独创的。

ORM

  • 对象关系映射
  • 实现了对象和数据库之间的映射
  • 隐藏了数据访问的细节,不需要编写SQL语句

编写Models

  • 在应用根目录下创建models.py文件,并引入models模块
  • 创建类,继承models.Model该类即是一张数据表
  • 在类中创建字段

模型层的相关配置

settings.py 文件

DATABASES = {
    'default': {
        # 表示的是django这个项目,它使用的是哪个数据库的驱动
        'ENGINE': 'django.db.backends.sqlite3',
        # 数据库的名字
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

初识Django Shell

Django Shell 是什么

2020-02-22_010020.png

为什么需要Django Shell

2020-02-22_010250.png

Django Shell的使用-新建一篇文章

进入django shell 环境

python manage.py shell

引入文章模型

from blog.models import Article

新建文章

a=Article()
a.title="Test Django Shell"
a.brief_content="Test Django Shell,By Dongdongqiang Teacher"
a.content="Test Django Shell, New Article, Main content"

把Article的内容打印出来

print(a)

把文章保存到数据库里面

a.save()

怎么确定文章已经保存到数据库里面

articles=Article.objects.all()
article=articles[0]
print(article.title)

初识Django Admin模块

Django Admin模块是什么

  • 它是Django自带的一个功能强大的自动化数据管理界面
  • 被授权的用户可直接在Admin中管理数据库
  • Django提供了许多针对Admin的定制功能

实现博客数据返回页面

定义一个视图函数,返回博客的文章内容

views.py 文件

from blog.models import Article

def article_content(request):
    article = Article.objects.all()[0]
    title = article.title
    brief_content = article.brief_content
    content = article.content
    article_id = article.artcle_id
    publish_date = article.publish_date
    # 把它们拼接成一个字符串
    return_str = 'title:%s,brief_content:' \
                 '%s,content:%s,article_id:%s,publish_date:%s' % (title,
                                                                  brief_content,
                                                                  content,
                                                                  article_id,
                                                                  publish_date)
    return HttpResponse(return_str)

完成视图函数后,需要配置下路由

urls.py文件

path('content', blog.views.article_content),

初识Django视图与模板

初识Django的模板系统

模板系统简介

  • 视图文件不适合编码HTML
    2020-02-23_175538.png
  • 页面设计改变需要修改python代码
  • 网页逻辑和网页视图应该分开设计
  • 模板系统的表现形式是文本
  • 分离文档的表现形式和表现内容
  • 模板系统定义了特有的标签占位符

基本语法

  • 变量标签 {{变量}}
    2020-02-23_181137.png
  • for 循环标签 {% for x in list %},{% endfor %}
    2020-02-23_181414.png
  • if-else 分支标签 {% if % },{% else %},{% endif %}
    2020-02-23_181647.png

使用模板系统渲染博客页面

页面布局

<div class="container page-header">

</div>
<div class="container page-body">
   <div class="row">
       <div class="col-md-9" role="main"></div>
       <div class="col-md-3" role="complementary"></div>
   </div>
</div>

实现文章详情页面的跳转

def get_index_page(request):
    all_article = Artical.objects.all()[0]
    return render(request, "blog/index.html", {
        "article": all_article
    })

实现上下篇文章跳转

实现分页功能

实现最近文章列表