Django

本文介绍了Django框架的基础,包括MVT设计模式、数据库模型创建、数据迁移、视图路由、后台管理、以及实现分页功能的方法,如手动和自动分页器的使用。
摘要由CSDN通过智能技术生成

更多详细内容请参考:Django 教程 | 菜鸟教程 (runoob.com)

Django 采用了 MVT 的软件设计模式,即模型(Model),视图(View)和模板(Template)。

查看版本:

python -m django --version

启动项目:

python manage.py runserver

数据迁移

#生成迁移文件
python manage.py makemigrations

#执行迁移
python manage.py migrate

创建应用:

python manage.py startapp App

Django框架流程图:

创建数据库模型:

class UserModel(models.Model):
    name = models.CharField(max_length=30, unique=True)
    age = models.IntegerField(default=18)
    sex = models.CharField(max_length=20)
    is_delete = models.BooleanField(default=False)

后台管理:

#注册对应模型
admin.site.register(UserModel)

#创建超级管理员的账号和密码
python .\manage.py createsuperuser

Django路由:

路由简单的来说就是根据用户请求的 URL 链接来判断对应的处理程序,并返回处理结果,也就是 URL 与 Django 的视图建立映射关系

掌握对数据库的增删改查Django ORM – 单表实例 | 菜鸟教程 (runoob.com)

分页器:

# 分页功能
def paginate(request, page=1):
    per_page = 10
    persons = PersonModel.objects.all()
    persons = persons[(page - 1) * per_page:page * per_page]
    total = PersonModel.objects.count()
    total_page = math.ceil(total / per_page)
    pages = range(1, total_page + 1)
    return render(request, 'paginate.html', {"persons": persons,
                                             "pages": pages})


from django.core.paginator import Paginator


# 自动分页
def paginate2(request, page=1):
    per_page = 10

    all_data = PersonModel.objects.all()

    paginator = Paginator(all_data, per_page)
    persons = paginator.page(page)
    pages = paginator.page_range
    return render(request, 'paginate.html', {"persons": persons,
                                             "pages": pages})
#前端代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    ul {list-style: none;padding: 0}
    .btns li{
        float: left;
        margin: 5px;
    }
    hr{
        clear: both;
    }
</style>
<body>
    <h2>分页功能</h2>
    <hr>
    <ul class="btns" >
        {% for page in pages %}
        	<li>
{#                 <a href="{%  url 'paginate' page%}"><button>{{ page }}</button></a>#}
                    <a href="{%  url 'paginate2' page%}"><button>{{ page }}</button></a>
            </li>
        {% endfor %}
    </ul>
    <hr>
        <ul>
            {% for person in persons %}
            <li>{{ person.name }}-{{ person.age }}</li>
            {% endfor %}
        </ul>
    
        
</body>
</html>

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值