一、

 1.写出你所知道Djang有关的所有命令(下载、安装等)

  

  1. .安装django
  2. pip install django == 1.11.
  3. .创建项目
  4. diango­admin startproject 项目名
  5. .启动项目
  6. cd 项目目录
  7. python manage.py runserver    #127.0.0.1:
  8. python manage.py runserver 
  9. python manage.py runserver 0.0.0.0:
  10. .创建App
  11. python manage.py  startapp app01
  12. .数据库迁移
  13. python manage.py makemigrations      #检查 models.py是否有变化,记录变化
  14. app01/migrations python manage.py migrate         #将变更记录同步到数据库中

 2.Django的setting.py中,你用到的配置项有哪些?他们的作用是什么?

  

  1. .INSTALLED_APPS 注册App Django 程序可以识别新建的App
  2. .MIDDLEWARE 中间件 自定义中间件注册进来可以执行其中的方法
  3. .TEMPLATES 模版的相关配置 主要看DIRS 模版的存放路径
  4. .DATABASES 数据库相关配置 告诉Django连接什么数据库
  5. .STATIC_URL='/static/' 静态文件的别名, 模版中已别名开头
  6. .STATICFILES_DIRS = [ #静态文件的具体存放路径 Django会按照
  7. os.path.join(BASE_DIR,'static')
  8. ]

 3.Django使用Mysql数据库的流程是什么?

  1. .创建一个mysql数据库
  2. .settings 中写配置
  3. DATABASES={
  4. 'defalut':{
  5. 'ENGINE':'django.db.backends.mysql',
  6. "NAME":'library',
  7. "USER":'root',
  8. "HOST":'127.0.0.1',
  9. "PORT":,
  10. }
  11. }
  12. .告诉django使用pymysql的模块连接mysql数据库
  13. 在与settings 同级的目录下的 __init__.py中写代码:
  14. import pymysql
  15. pymysql.install_as_MySQLdb()
  16. .在app01/models.py中写类(继承models.Model)
  17. class Publisher(models.Model):
  18. id = models.AutoField(primary_key = True)
  19. name = models.CharField(max_length = ,unique = True)
  20. .数据库迁移的命令
  21. python manage.py makemigrations
  22. python ,manage.py migrate

 4.ORM是什么?为什么要使用ORM?他的优缺点是什么?他的对应关系是什么?

  1. .ORM(对象关系映射) 是一种为了解决面向对象与关系型数据库不匹配的技术
  2. .使用ORM不用在过多得关注SQL语句的编写,而是更加专注于逻辑代码的编写
  3. .优点:
  4. .ORM 提供了对数据库的映射,不用直接编写SQL代码, 只需操作对象就能对
  5. 数据库操作数据
  6. .让软件开发人员专注于业务逻辑的处理,提高了开发效率
  7. 缺点:
  8. .ORM 的缺点是会在一定程度上牺牲程序的执行效率
  9. .ORM 的操作是有限的, 也就是ORM定义好的操作是可以完成的
  10. .对应关系
  11. ----> 数据表
  12. 对象-----> 数据行
  13. 属性 -----> 字段

 5.定义视图函数的时候要注意什么?

  1. .函数的第一个参数是request
  2. .函数必须返回一个HttpRespo nse对象

 6.FBV和CBV是什么? 定义一个简单的CBV.

  1. FBV:函数
  2. CBV:类
  3. CBV版:
  4. class AddClass(View):
  5. def get(self,request):
  6. return render(request,"add_class.html")
  7. def post(self,request):
  8. class_name = request.POST.get("class_name")
  9. models.Classes.objects.create(name = class_name)
  10. return redirect("/class_list/")

 7.CBV使用装饰器的方法有哪些,分别是什么?写出简单示例.

  1. .导入方法装饰器
  2. from django.utils.decorators import method_decorator
  3.  
  4. .方法:
  5. .给方法上加装饰器
  6. @method_decorator(wraper)
  7. def get(self,request,*args,**kwargs)
  8. return HttpResponse("ok")
  9. .给dispatch 上加
  10. @method_decorator(wraper)
  11. def dispatch(self,request,*args,**kwargs):
  12. .给类上加
  13. @method_decorator(wraper,name = 'get')
  14. class Simple(View)

 8.写出你所知道的request对象的方法和属性

  1. .属性:
  2. request.method --->请求的方式8 GET POST PUT DELETE OPTIONS
  3. request.GET ----> 字典 url上携带的参数
  4. request.POST ----->字典 form 表单通过POST请求提交的数据
  5. request.path_info ----->URL 路径 不带参数
  6. request.body ----->请求体
  7. request.FILES 上传的文件{}
  8. .方法:
  9. request.get_host() ----->主机地址
  10. request.get_full_path() ----->URL 路径 带参数

 9.给视图传参数的方式有哪几种?分别是什么,写出示例.

  1. 分组:
  2. url(r'book/([0-9]){4}/([0-9]{2})/$',book,)
  3. 按照位置参数传递给视图函数
  4. .命名分组
  5. url(r"book/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$",book,)
  6. 按照关键字参数传递给视图函数
  7. .参数
  8. url(r"book/(?P<year>[0-9]{4})/(?P<month>[0-9])/$",book,{'year':''})

 10.如何在URLconf中给url命名?在视图和模版中如何使用url反向解析?请写出所有情况

  1. urls.py:
  2. url(r'^author_list/$',views.author_list,name = 'author_list'),
  3. url(r'^home/([0-9]{4})/([0-9]{2})/',views.home,name = 'home'),
  4. url(r'^home/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/',views.home,name = 'home'),
  5.  
  6. 视图中反向解析:
  7. from django.urls import reverse
  8. reverse("author_list") -----> '/author_list/'
  9. 无名分组:
  10. reverse('home',args=('','')) ---->'/home/1999/06/'
  11. 有名分组:
  12. reverse('home',kwargs = {'year':'','month':''}) ---->'/home/1998/06/'
  13.  
  14. 模板中反向解析:
  15. {% url 'author_list' %} ---->'/author_list/'
  16. 无名分组:
  17. {% url 'home' '' '' %}
  18. 有名分组:
  19. {% url 'home' '' '' %}
  20. {% url 'home' month = '' year = '' %}

 11.请写出你所知道的模板语法

  1. .变量
  2. {{ 变量名 }}
  3. . .的用法
  4. {{ name_list. }} #列表取值
  5. {{ name_dict.name1 }} #字典取值
  6. {{ p1.name }} #对象的属性
  7. {{ p1.sing }} # 对象的方法
  8. . 过滤器
  9. {{ 变量名|filter:参数 }}
  10. .tags
  11. {% for user in user_list %}
  12. {{ user.name }}
  13. {% endfor %}
  14.  
  15. {% if 条件 %}
  16. 操作
  17. {% endif %}

 12.请写出母版和继承的使用方法

  1. . 创建一个 HTML 文件当做母版 'base.html' ,母版中将多个页面的重复代码提取出来
  2. . 在母版中定义多个block ,来区分不同页面的不同内容
  3. .在子页面中继承母版 {% extends 'base.html' %}
  4. .在block 中写自己页面独特的内容,用来替换模板中block中的内容

 13.请写出自定义filter的步骤

  1. .在app下创建一个名叫 templatetags python templatetags不能写错
  2. .在templatetags 里建一个 py文件 myfilters
  3. .在py文件中编辑:
  4. from django import template
  5. register = template.Library() # register 名字不能错
  6.  
  7. @register.filter
  8. def add_sb(value,arg):
  9. return '{}sb'.format(value)
  10.  
  11. @register.filter(name = 'dsd')
  12. def add_sb(value,arg):
  13. return '{}sb'.format(value)
  14. .重启
  15. .使用filter
  16. {% load myfilters %}
  17. {{ name1|dsd:'very' }}

 14.cookie 和session 是什么? 为什么要使用它们?

  1. .cookie
  2. 定义: cookie是服务器让浏览器保存在浏览器本地的键值对
  3. 原因: http 是无状态,每次请求之间没有任何关系,无法保存状态. 使用cookie 来保存
  4. 一些状态
  5. .session
  6. 定义: session 是保存在服务器上的键值对,依赖于cookie
  7. 原因:
  8. cookie 在浏览器端 不太安全
  9. cookie 长度受限 session长度不受限

 15.Django中操作 cookie 和session 的方法有哪些?

  1. .cookie
  2. .设置 cookie
  3. rep = redirect("/index/")
  4. rep.set_cookie(key,value,max_age = )
  5. rep.set_signed_cookie(key,value,max_age = , salt = '')
  6. .获取 cookie
  7. request.COOKIES['key']
  8. request.COOKIES.get('key') --->推荐的取法
  9. request.get_signed_cookie('key',salt ='')
  10. .删除 cookie
  11. rep.delete_cookie('key')
  12. .session
  13. .设置session
  14. request.session['key'] = value
  15. request.session.setdefault(key,value) ---->存在就不设置
  16. .获取session
  17. request.session['key']
  18. request.session.get(key,'')
  19. .删除 session
  20. request.session.pop(key) ----->删除某一个键值对
  21. del request.session['key']
  22.  
  23. request.session.delete() -->删除所有的session 键值对
  24. request.session.flush() -->删除所有的session 键值对,删除了 cookie
  25. .设置超时时间
  26. request.session.set expiry()
  27. .清除当前过期的 session
  28. request.session.clear_expired()

 16.Django的中间件是什么?请写出 process_request 和process_response 以及process_view三个方法的执行时间、执行顺序和不同返回值不同的流程

  1. .process_request(self.request)
  2. 执行时间 :请求来 先执行,在视图之前
  3. 执行顺序: 按照注册顺序执行
  4. 返回值:
  5. 返回值是None 正常往后走
  6. 返回值是 HttpResponse 对象 后面的不在走, 直接执行当前中间的
  7. process_response方法
  8. .process_response(self,request,response)
  9. 执行时间: 视图函数之后
  10. 执行顺序:安装注册顺序倒序执行
  11. 返回值: HttpResponse对象
  12. .process_view(self,request,view_func,view_args,view_kwargs)
  13. 执行时间: 在视图之前 ,process_request之后
  14. 执行顺序: 按照注册顺序 顺序执行
  15. 返回值:
  16. None 正常往后走
  17. HttpResponse 对象 后面的中间件 process_view方法、视图不执行
  18. 走所有中间的 process_response方法

二、ORM操作

models.py:

1.查询

a) 查找三年级的班级对象

  1. models.Classes.objects.filter(c_name__startswith='三年')

b)查找三年二班的所有同学的名字

  1. models.Classes.objects.get(c_name = '三年二班').student_set.all().values('s_name')

c)查询每个班级的名称和的学生人数

  1. models.Classes.objects.annotate(count = Count('student')).values('c_name','count')

d)查询年纪最大的老师姓名和年龄

  1. .models.Teacher.objects.order_by('-age').values('t_name','age').first()
  2. .models.Teacher.objects.filter(age=models.Teacher.objects.aggregate(max=Max('age'))['max']).values('t_name','age')

e)分别查询出男女老师的个数

  1. models.Teacher.objects.values('sex').annotate(Count('sex'))

f)查询名字中有"灰"的学生姓名和成绩

  1. models.Student.objects.filter(s_name__contains = '灰').values('s_name','score')

g)查询成绩合格的学生姓名和成绩

  1. models.Student.objects.filter(score__gte=).values('s_name','score')

2.增加

a)新增一个名为"三年四班"的班级

  1. models.Classes.objects.create(c_name = '三年四班')

b)给三年二班新增一个名为"小青"的同学

  1. models.Student.objects.create(s_name = '小青',my_class_id = )
  2. models.Classes.objects.get(c_name = '三年二班').student_set.create(s_name='小青',score = )

c)新增一个名为"苑局"的30岁的男老师,他教三年三班

3.修改

a)小红转班了,转到了三年四班

b)给所有的学生的成绩都加5分

  1. from django.db.models import F
  2. models.Student.objects.update(score = F('score')+)

三、请画出Django请求的生命周期.

Django ---- 基础题的更多相关文章

  1. 各位大佬Python的第一部分道基础题已经整理好了,希望大家面试的时候能用的上。

    Python的第一部分道基础题,希望大家面试的时候能用的上. 1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途 ...

  2. day 70 Django基础五之django模型层(二)多表操作

    Django基础五之django模型层(二)多表操作   本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...

  3. Android测试基础题(三)

    今天接着给大家带来的是Android测试基础题(三).    需求:定义一个排序的方法,根据用户传入的double类型数组进行排序,并返回排序后的数组 俗话说的好:温故而知新,可以为师矣 packag ...

  4. Python之路-(js正则表达式、前端页面的模板套用、Django基础)

    js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  5. 小试牛刀3之JavaScript基础题

    JavaScript基础题 1.让用户输入两个数字,然后输出相加的结果. *prompt() 方法用于显示可提示用户进行输入的对话框. 语法: prompt(text,defaultText) 说明: ...

  6. 小试牛刀2:JavaScript基础题

    JavaScript基础题 1.网页中有个字符串“我有一个梦想”,使用JavaScript获取该字符串的长度,同时输出字符串最后两个字. 答案: <!DOCTYPE html PUBLIC &q ...

  7. Django 基础教程

    Django 基础教程 这是第一篇 Django 简介 »  Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! 你一定可以学会,Django 很简单 ...

  8. HDU 1301 Jungle Roads (最小生成树,基础题,模版解释)——同 poj 1251 Jungle Roads

    双向边,基础题,最小生成树   题目 同题目     #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<stri ...

  9. nyist oj 79 拦截导弹 (动态规划基础题)

    拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描写叙述 某国为了防御敌国的导弹突击.发展中一种导弹拦截系统.可是这样的导弹拦截系统有一个缺陷:尽管它的第一发炮弹可以 ...

随机推荐

  1. PMP模拟考试-2

    1. Increasing resources on the critical path activities may not always shorten the length of the pro ...

  2. Java -- 获取指定接口的所有实现类或获取指定类的所有继承类

    Class : ClassUtil package pri.lime.main; import java.io.File; import java.io.IOException; import jav ...

  3. grid网格的流动定位

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. PowerDesigner导出word,PowerDesigner把表导出到word,PDM导出word文档

    PowerDesigner导出word,PowerDesigner把表导出到word,PDM导出word文档 >>>>>>>>>>>& ...

  5. mysql临时表产生的执行效率问题改进(转)

    问题: 近日,线上MySQL查出一个慢sql,每次都要查询1000ms以上,严重影响用户体验 今得空去诊断一番,记录如下: sql原句: SELECT r.object_id AS cardId, c ...

  6. php扩展AMQP,安装报错解决

    接下来来安装php扩展AMQP,安装了它以后,才能用PHP操作rabbitmq.wget https://pecl.php.net/get/amqp-1.4.0.tgztar -zxvf amqp-1 ...

  7. Ora2Pg的安装和使用

    1. 安装DBI,DBD::Oracle DBI只是个抽象层,要实现支持不同的数据库,则需要在DBI之下,编写针对不同数据库的驱动.对MySql来说,有DBD::Mysql, 而对ORACLE来说,则 ...

  8. Java实现简单的正则表达式匹配

    import java.util.regex.Pattern; public class Test_REG { public static void main(String[] args) { //只 ...

  9. iOS - 截屏,view截图的基本方法

    推荐一个第三方好用的框架:SDScreenshotCapture #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice cur ...

  10. PHP 搜索分词实现代码

    <?php /** * @author: xiaojiang 2014-01-08 * php 建立分词树 * */ class Tree{ public $w = ''; public $su ...