django[十二] 常用功能块 - 迁
功能
分页 django-pure-pagination
类中定义
from pure_pagination.mixins import PaginationMixi from django.contrib.auth.mixins import LoginRequiredMixin from django.views.generic import ListView, DetailView, CreateView,TemplateView class UserListView(LoginRequiredMixin, PaginationMixin, ListView):
html中写法
<div class="row">
<div class="col-sm-6">
<div class="dataTables_info" id="editable_info" role="status" aria-live="polite">
显示 [{{ paginator.count }}] 条数据中的 第 [{{ page_obj.start_index}}] 至 [{{ page_obj.end_index }}] 的数据
</div>
</div>
{% include 'paginator.html' %}
</div><!-- /.paginator -->
类视图内置函数
class UserListView(LoginRequiredMixin, PaginationMixin, ListView):
model = UserProfile // 模型名
template_name = "dashboard/user_list.html" //模板名
context_object_name = "userlist" // 返回的context名字
paginate_by = 10 //分页数量
keyword = ''
def
def get_queryset(self): // 该方法可以返回一个量身定制的对象列表,当我们使用Django自带的ListView展示所有对象列表时,ListView默认会返回Model.objects.all()
queryset = super(UserListView, self).get_queryset()
self.keyword = self.request.GET.get('keyword', '').strip()
if self.keyword:
queryset = queryset.filter(Q(username__icontains=self.keyword) |Q(name_cn__icontains=self.keyword))
return queryset
def get_context_data(self, **kwargs): // 可以用于给模板传递模型以外的内容或参数,非常有用,比如这边是keyword
context = super(UserListView, self).get_context_data(**kwargs)
context['keyword'] = self.keyword
return context
页面跳转jump
if form.is_valid():
form.save()
res = {"code": 0, "result": "更新成功", 'next_url': self.next_url}
else:
res = {"code": 1, "errmsg": form.errors, 'next_url': self.next_url}
logger.error("delete power error: %s" % traceback.format_exc())
return render(request, settings.JUMP_PAGE, res)
jump.html
{% extends "base.html" %}
{% block content %}
{% if code == 0 %}
<h1>{{ result }}</h1>
{% else %}
<h1>操作失败:</h1><br>
<h3>{{ errmsg }}</h3>
{% endif %}
{% endblock %}
{% block js %}
var status = {{ code }};
var next_url = "{{ next_url|safe }}";
var timejump = 1500;
$(function(){
if (status != 0){
timejump = 5000
}
setTimeout(function(){
window.location.href = next_url;
}, timejump)
})
{% endblock %}
html的超链接写法
<a href="{% url 'users:user-granted-asset' pk=user_object.id %}" class="text-center"><i class="fa fa-cubes"></i> {% trans 'Asset granted' %}</a>
users:user-granted-asset ==> users是app_name user-granted-asset是url里面name
urls.py
path('user/<uuid:pk>/assets/', views.UserGrantedAssetView.as_view(), name='user-granted-asset')
update_or_create
try:
obj,created = ServerList.objects.update_or_create(server_name=webdata.get("server_name"),
defaults={
'server_name':webdata.get("server_name"),
'server_property':webdata.get("server_property"),
'active':webdata.get("active"),
'create_by':request.user.username,
'comment':webdata.get("comment"),
})
if created:
res = {"status": True,'msg':'服务创建成功'}
else:
res = {"status": True,'msg':'服务更新成功'}
except Exception as e:
res = {"status": False,'msg':'服务修改失败,reason:[%s]' % str(e)}
需要有一个唯一键,这个键不能改,defaults值是更新值
如果id值是-1 那么创建出来的也是-1的id

浙公网安备 33010602011771号