Django中查询queryset时什么情况下用Q方法
F:对数据本身的不同字段进行操作 如:比较和更新,对数据进行加减操作
Q:用于构造复杂的查询条件 如:& |操作
Django中验证表单提交格式是否正确需哪个函数
form.is_valid() :返回布尔值
orm如何取消级联
user = models.ForeignKey(User, blank=True, null=True, on_delete+models.SET_NULL)
并且SET_NULL只有在null为True的时候,才可以使用。
Django中如何保存和更新session
-
保存session
1 生成随机字符串 ltv8zy1kh5lxj1if1fcs2pqwodumr45t
2 response.set_cookie("sessionid",ltv8zy1kh5lxj1if1fcs2pqwodumr45t)
3 在django—session表中创建一条记录:
session-key:ltv8zy1kh5lxj1if1fcs2pqwodumr45t
session-data:{"is_login":True,"username":"yuan"} -
更新session
在django—session表中创建一条记录:
session-key: ltv8zy1kh5lxj1if1fcs2pqwodumr45t
session-data:被更新的数据
简述Django对http请求的执行流程
- 在接受一个Http请求之前的准备,启动一个支持WSGI网关协议的服务器监听端口等待外界的Http请求,比如Django自带的开发者服务器或者uWSGI服务器。
- 服务器根据WSGI协议指定相应的Handler来处理Http请求,并且初始化该Handler,在Django框架中由框架自身负责实现这一个Handler。 此时服务器已处于监听状态,可以接受外界的Http请求 当一个http请求到达服务器的时候
- 服务器根据WSGI协议从Http请求中提取出必要的参数组成一个字典(environ)并传入Handler中进行处理。
- 在Handler中对已经符合WSGI协议标准规定的http请求进行分析,比如加载Django提供的中间件,路由分配,调用路由匹配的视图等。 返回一个可以被浏览器解析的符合Http协议的HttpResponse。
Django中当用户登录到A服务器进入登陆状态,下次被nginx代理到B服务器会出现什么影响
之前的登录状态会丢失
Django是如何处理跨域请求的
- 启用中间件
- post请求
- 验证码
- 表单中添加{%csrf_token%}标签
查询集的两大特性?什么是惰性执行
- 惰性执行、缓存 。
- 创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代、序列化、与if合用
查询集返回的列表过滤器有哪些
- all():返回所有数据
- filter():返回满足条件的数据
- exclude():返回满足条件之外的数据,相当于sql语句中where部分的not关键字
- order_by():排序
如何获取django urlpatterns里面注册的所有url
from django.conf.urls import url,include
from arya.service.sites import site
from django.urls.resolvers import RegexURLPattern
from django.urls.resolvers import RegexURLResolver
from django.shortcuts import HttpResponse
def index(request):
print(get_all_url(urlpatterns,prev='/'))
return HttpResponse('...')
def get_all_url(urlparrentens,prev,is_first=False,result=[]):
if is_first:
result.clear()
for item in urlparrentens:
v = item._regex.strip('^') #去掉url中的^和') #去掉url中的^和
if isinstance(item,RegexURLPattern):
result.append(prev + v)
else:
get_all_url(item.urlconf_name,prev + v)
return result
urlpatterns = [
url(r'^arya/', site.urls),
url(r'^index/', index),
]
urls.py中include的作用
进行路由转发,通常我们会在每个app里,各自创建一个urls.py路由模块,然后从根路由出发,将app所属的url请求,全部转发到相应的urls.py模块中。
urlpatterns中的name与namespace有什么作用?
- name,给路由起一个别名
- namespace,名字空间,防止多个应用之间的路由重复
如何给一个字段设置一个主键?
primary_key
如何设置一个带有枚举值的字典?
DateTimeField类型中的auto_now与auto_now_add有什么区别
-
DateTimeField.auto_now
这个参数的默认值为false,设置为true时,能够在保存该字段时,将其值设置为当前时间,并且每次修改model,都会自动更新。因此这个参数在需要存储“最后修改时间”的场景下,十分方便。需要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django再带的admin管理器,那么该字段在admin中是只读的。 -
DateTimeField.auto_now_add
这个参数的默认值也为False,设置为True时,会在model对象第一次被创建时,将字段的值设置为创建时的时间,以后修改对象时,字段的值不会再更新。该属性通常被用在存储“创建时间”的场景下。与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin中字段也会成为只读的。
values()与values_list()有什么区别?
- values : 取字典的queryset
- values_list : 取元组的queryset
selected_related与prefetch_related有什么区别?
- select_related适用于外键和多对一的关系查询;
- prefetch_related适用于一对多或者多对多的查询。
当删除一个外键的时候,如何把与其关联的对应关系删除
使用on_delete参数
class Meta中常用的元信息字段有哪些
app_label
指定模型类是那个应用程序的
db_table
指定自定义数据库表名
若不提供该参数, Django 会使用 app_label + '_' + module_name 作为表名
ordering
告诉Django模型对象返回的记录结果集是按照哪个字段排序
- end -
网友评论