python-pycharm-django

创建app  (添加到installed apps)
python manage.py startapp test_worm

依赖文件生成
pip freeze > requirements.txt
依赖文件安装
pip install -r requirements.txt

添加静态资源,在settings.py中最后一行添加
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) # 开发时创建的静态目录

创建表
python manage.py makemigrations
python manage.py migrate

对queryset进行序列化
from django.core import serializers
serializers.serialize('json', queryset)
开启项目远程访问
1 开启mysql数据库远程访问:
新建查询
mysql> use mysql;
Database changed
mysql> grant all privileges on *.* to root@'%' identified by "root";
2 让别人通过IP访问我的电脑(服务器必须开启):
在settings.py中加入 ALLOWED_HOSTS = ['*'] # 我的电脑的ip地址
数据库改为宿主数据库地址 'HOST': '192.168.16.198',
3 找到项目中manage.py的位置,打开命令行运行以下命令
python manage.py runserver 0.0.0.0:8000

##面向对象

  • 面向对象基本特征(封装,继承,抽象,多态)(了解)
  • 类Class和实例Instance
    • 类是抽象的模板
    • 实例是根据类创建出来的一个个具体的“对象“
    • 类的定义:通过 class 关键字
    • 实例: 根据类创建
  • 函数
    • 用来实现某个功能的,可重复使用的代码块
    • 内建函数
    • 自定义函数:
      • 函数代码块以 def 关键词开头,后接函数标识符名称 和 圆括号 ()
      • 传入参数和自变量必须放在圆括号中间
      • 内容以冒号起始,并且缩进
      • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
      • 一般格式:def 函数名(参数列表): 函数体
      • 调用

六个标准的数据类型

不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);

可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

  • 数字(Number),数字数据类型用于存储数值

    • 整型
    • 浮点型
    • 复数(不管)
    • 类型转换
  • 字符串(String)

    • 定义
    • 格式化 :% 运算符
    • 长度:len(str)
    • 常用函数:注意返回值
      • 是否以字符串str1开头:str.startswith('str1'),
      • 字符串拼接,
      • 是否包含特定字符:find()
      • 字符串分割: split
  • 列表List

    • 定义
    • 常用操作:
      • 访问或更新列表中的值(索引)
      • 添加元素: append() 在末尾添加新的对象
      • 插入元素:指定索引 insert(index,obj)
      • 删除元素(按索引) del list[index]
      • 长度
      • 元素是否存在于列表中
      • 迭代 (循环)
  • 元组Tuple(了解)

  • 字典Dictionary

    • 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式:d = {key1 : value1, key2 : value2 }
    • 键必须是唯一,不可变的,如字符串,数字或元组;
    • 值则不必:可以取任何数据类型,
    • 常用操作:
      • 访问字典元素
      • 清空字典
      • 判断某键值是否存在于该字典中:key in dict
      • dic.keys(); dic.values() 返回字典的键/值 列表
      • dic.items() 列表返回可遍历的(键, 值) 元组数组
  • 集合Set(了解)

    • 一个无序不重复元素的序列
    • 使用set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
    • 常用操作:添加add(),取长度,清空,判断元素是否存在

七种运算符

  • 算术运算符
  • 比较运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符(不搞)
  • 成员运算符
  • 身份运算符(了解)

条件控制

  • if elif else

循环,迭代

  • for item in data:

Django web 基础

django web应用目录结构

  • manage.py : 运行django项目并用于管理任务的命令行工具
  • static 目录:存放app运行所需的静态文件,一般为js和css,需要自己手动创建,并加载到settings.py配置中
  • templates 目录: 存放app运行所需的html页面
  • 项目名称下 子文件:
    • _init.py 不管
    • settings.py :配置项目运行所需的环境,如 数据源,日志,缓存等
    • urls.py : 与app目录下views.py形成 视图函数与URL路由绑定
  • app名称下 子文件:
    • models.py: 存放自定义模型类(与数据库形成orm对象关系映射)
    • views.py:
      • 定义视图函数,并与项目下urls.py中的url路由进行绑定
        • 所有的views函数都需要以request对象作为第一个参数,request代表客户端浏览器向服务器请求的一个信息字符串, views中的函数需要接收这个字符串才行对他进行处理。
        • 视图函数返回值类型:
          • 返回一个字符串: 调用 HttpResponse()函数
          • 返回一个网页: 调用render函数,返回一个html模板文件(接收到一个请求,然后指定好一个html模板,并把上下文context字典中的内容, 加载进templates_name中指定的模板文件, 并通过浏览器渲染呈现.)
            • 参数request: 是一个固定参数, 就是指通过接受到的通过wsgi处理过的客户端浏览器请求数
            • 参数template_name:templates中定义的HTML文件, 要注意路径比如'templatespollsindex.html', 参数就要写‘pollsindex.html’
            • 参数 context: 要传入上下文中用于渲染呈现的数据, 默认是一个字典格式,键即下文html模板中需要被替换的元素,键值即在views视图函数中需要传到html模板中变量需要替换成的值。
            • 模板文件中接收传入的context:使用jinja2语言 {{data}}
          • 返回重定向 redirect
      • 用户自定义函数: 一般封装了视图函数需要调用的某个功能

Html基础

标签 :由尖括号包围的关键词,是成对出现的,第一个标签是开始标签,第二个标签是结束标签

  • head标签:网页标题(css和js文件引入,自定义样式和js函数)
  • body标签内显示的是网页内容
  • 我们关注的标签:
    1. input输入框: 通过id查找到该标签,通过name属性进行前后台数据交互
    2. form表单:通过method指定数据提交方式,通过action指定提交数据的url,通过类型为submit的按钮指定提交请求事件。
  • form表单提交请求的类型:GET和POST,区别,用法
  • 样式: 网页显示的效果
  • 事件:通过自定义jquery js实现触发
  • 前端框架:已经定义好了样式和js事件,用户可选择性调用(需提前引入要用到的css和js文件)

ajax数据交互

  • 按钮点击事件执行自定义js函数,在函数体中进行请求参数获取
  • 常用写法
  • $.ajax({ type: "post", async: true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行) url: url, //对应urls.py中的url data: {"data": data}, //请求的参数 dataType: "json", //返回数据形式为json success: function (result) { //请求成功,获取到的数据在result中 }, error: function (errorMsg) { //请求失败时执行该函数 } });

总结

一般开发流程

  页面ajax请求 --> 后台接收request请求-->获取请求附带参数 --> 将参数作为查询条件请求数据库获取数据--> 
  数据预处理(重中之重)--> json序列化并返回处理后的数据 --> 
  ajax请求成功获取result --> 数据解析并渲染页面

数据预处理:

通过循环迭代,将数据库中取出的queryset数据集改造成我们需要的形式

页面接收数据并解析:

将接收到的数据,通过循环迭代,加载到页面上

核心: 数据的处理(流程把握,整体思路)


命名规范(约定) :不使用保留字和关键字

原则:见名知意

文件名 :小写 + 下划线

类名 : 总是使用首字母大写单词串。如MyClass

函数&方法 : 小写+下划线

变量 : 小写,由下划线连接各个单词

 


代码规范

  1. 编码
    • 文件一律使用UTF-8编码
    • 文件头部必须加入#--coding:utf-8--标识
  2. 代码格式
    1. 缩进
      • 统一使用 4 个空格进行缩进
    2. 代码里 多数应该使用 单引号
    3. 文档字符串 (docstring) 使用三个双引号 """......"""
  3. 注释
    1. 在代码的关键部分(或比较复杂的地方), 能写注释的要尽量写注释
    2. 文档注释以 """ 开头和结尾, 首行不换行, 如有多行, 末行必需换行,

Pycharm使用

基本使用:

1. 创建项目:选择解释器project interpreter-选择existing interpreter,点击右边的省略号-选择system interpreter
2. 使用4个空格的tab: 选择file->settings->editor->code style ->选择Python,取消勾选use tab character
3. 取消拼写检查: file->default settings->editor->inspections->spelling取消勾选,python下的pep8取消勾选
4. 代码自动提示 :打开设置,搜索code completion

常用快捷键:

1. ctrl +alt + L 自动格式化代码
2. ctrl +alt + 空格 自动提示代码,查看函数注释信息
3. Ctrl + P 查看参数信息(在方法中调用参数)
4. alt + enter 自动导入包

#end

作业

用户登陆功能实现

  1. 创建一个django项目,运行该项目并访问项目主页
  2. 根据视图关系映射,实现功能
    1. 定义用户登陆视图函数,返回用户登陆页面(配置函数与url对应)
    2. 创建用户登陆页面,在页面中添加用户登陆表单,参1:用户名,参2:密码
    3. 定义提交表单动作(执行某函数,并接收页面传递过来的用户名密码)
    4. 在提交表单动作中判断用户名为abc且密码为123时返回登陆成功页面,否则返回登陆失败页面

新闻头条展示(JSON解析学习)

 

json怎么用
  • JSON 是轻量级的文本数据交换格式,对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用
  • JSON 语法规则:
    • 数据保存在键/值对中
    • 数据由逗号分隔
    • 大括号保存对象
    • 中括号保存数组
  • JSON 对象在大括号({})中书写:对象可以包含多个名称/值对:
  • 使用点号(.)或者中括号([])来访问对象的值
  • 使用for-in循环,获取对象的属性
  • 使用json.loads(str)来解析json字符串
  • 使用json.dumps(data)进行对象序列化,便于页面取值
python第三方HTTP请求库requests的使用
  • requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多
  • 使用pycharm安装requests库
  • 访问http://docs.python-requests.org/zh_CN/latest/user/quickstart.html查看如何发送一个简单的请求;如何在请求中传递参数
  • 查看如何获取请求的返回值,正确编码返回的数据
基于用户登陆功能,成功则展示新闻头条,失败则重定向到登陆页面

#####后台部分

  1. 访问聚合数据官网:https://www.juhe.cn/
  2. 找到免费数据接口-新闻头条,查看API接口地址,请求方式,请求参数
  3. 使用提供的API接口测试工具进行测试,查看返回的数据类型及数据格式
  4. 使用requests库,请求该新闻头条接口
  5. 接收返回的数据,查看返回的数据格式
  6. 获取所需要的数据,并使用json解析该数据
  7. 定义一个data_list数组,用来保存我们需要的数据
  8. 使用for -in循环,遍历该json解析后的数据,取出我们需要的数据title,date,url,thumbnail_pic_s,并保存到data_list中
  9. 将组装好的数据重新序列化并返回给成功页面 #####前端页面部分
  10. 使用模板语言接收后台返回的HttpResponse

 

 

从数据库获取数据

 

安装MySQL数据库
  1. 将MySQL数据库安装到本地,记住mysql用户名和密码
  2. 使用导航猫测试是否能成功连接数据库
在django项目中使用数据库
  1. 修改settings配置数据源为本地数据库

  2. 使用django自带的数据库管理类from django.db import connection

  3. 执行sql语句获取查询结果

     with connection.cursor() as cursor:
     	cursor.execute(sql)
     	data = cursor.fetchall()
原文地址:https://www.cnblogs.com/lxgbky/p/13359066.html