美文网首页
Django总结

Django总结

作者: 葡萄柚子茶 | 来源:发表于2019-09-25 17:27 被阅读0次

1.建模型
迁移到数据库
注意,建数据库的时候要设置字符集

创建数据库指定编码格式
CREATE DATABASE test2 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
修改数据库字符集
alter database 数据库名 character set utf8;
修改表字符集
ALTER TABLE 表名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

python manage.py makemigrations appname
python manage.py migrate appname

2.配置url
3.写视图函数
(1)显示,继承ListView

class CustomerListView(AdminUserRequiredMixin, ListView):
    # 跳转对应的模板
    template_name = 'assets/customer_list.html'
    # 对应的模型
    model = Customer
    # context_object_name 给前端传的参数名
    context_object_name = 'customer_list'
    # 分页
    paginate_by = 5
    # 给上下文添加参数,传给前端
    def get_context_data(self, **kwargs):
        context = {
            'app': _('Assets'),
            'action': _('Customer list'),
        }
        kwargs.update(context)
        return super().get_context_data(**kwargs)

(2)新建,继承CreateView

class CustomerCreateView(AdminUserRequiredMixin, CreateView):
    model = Customer
    template_name = 'assets/customer_create_update.html'
    # 要写form,验证表单中的字段正确
    form_class = CustomerForm
    # 成功后跳转的页面
    success_url = reverse_lazy('assets:customer-list')
    success_message = create_success_msg
    disable_name = ['draw', 'search', 'limit', 'offset', '_']

    def get_context_data(self, **kwargs):
        context = {
            'app': _('Assets'),
            'action': _('Create customer'),
        }
        kwargs.update(context)
        return super().get_context_data(**kwargs)

    def form_valid(self, form):
        name = form.cleaned_data.get('name')
        if name in self.disable_name:
            msg = _(
                'Tips: Avoid using label names reserved internally: {}'
            ).format(', '.join(self.disable_name))
            form.add_error("name", msg)
            return self.form_invalid(form)
        return super().form_valid(form)

(3)更新,继承UpdateView

class CustomerUpdateView(AdminUserRequiredMixin, UpdateView):
    model = Customer
    template_name = 'assets/customer_create_update.html'
    form_class = CustomerForm
    success_url = reverse_lazy('assets:customer-list')
    success_message = update_success_msg

    def get_context_data(self, **kwargs):
        context = {
            'app': _('Assets'),
            'action': _('Update customer'),
        }
        kwargs.update(context)
        return super().get_context_data(**kwargs)

(4)删除,继承DeleteView

class CustomerDeleteView(AdminUserRequiredMixin, DeleteView):
    model = Customer
    template_name = 'delete_confirm.html'
    success_url = reverse_lazy('assets:customer-list')

(5)一对多关联对象的显示

class CustomerAssetsView(AdminUserRequiredMixin, SingleObjectMixin, ListView):
    paginate_by = settings.DISPLAY_PER_PAGE
    template_name = 'assets/customer_assets.html'
    context_object_name = 'assets'
    model = Customer
    object = None
    # 首先进dispatch视图函数
    def dispatch(self, request, *args, **kwargs):
        self.pk = kwargs['pk']
        return super().dispatch(request, *args, **kwargs)

    def get_queryset(self):
        queryset = Asset.objects.filter(customer_id=self.pk)
        return queryset

    def get_context_data(self, **kwargs):
        context = {
            'customer_id': self.pk
        }
        kwargs.update(context)
        return super().get_context_data(**kwargs)

(6)ajax

<script>
$(document).ready(function(){

    $('.delete-btn').click(function(){
        var url = '{% url "assets:customer-delete" pk=DEFAULT_PK %}'.replace("{{ DEFAULT_PK }}", $(this).data('uid'))
        console.log(url)
       # 弹框的标签
        swal({
              title: "确定删除这条记录?",
              icon: "warning",
              buttons: true,
              dangerMode: true,
            }, function(){
                $.ajax({
                    type: 'post',
                    url: url,
                    success: function(data){
                        location.reload();
                    }
                })
            })
    })
})
</script>

相关文章

网友评论

      本文标题:Django总结

      本文链接:https://www.haomeiwen.com/subject/ogkwuctx.html