django查询mysql数据 从数据库提出并分页展示

要把数据提出并展示出来~效果如下:

1、需要建立一个project噢~

project中要包含一个展示的html页面和一个“后台”的python页面。为了把.html和.py文件区分开,所以在project的文件夹下要建立一个templates文件夹来存放html文件。建好的project如下:

2、打开test.py进行编辑。
1)首先,要连接数据库,其中的MySQLdb需要自行下载安装,它是python连接mysql数据库所必不可少的~当然~如果水平灰常高滴童鞋可以自己写。连接代码如下~数据库的相关信息因自己的数据库而异。
2)接下来需要的就是用sql语句将数据从数据库中提取出来。因为我们要分页显示所以我们用到了sql中limit语句。同时我们也需要定义一个变量curr_page来获取当前页面是第几页。之后要做的就是把数据库中取出的数据循环赋给一个results变量。这样只要把results的结果给.html文件,数据就可以循环输出啦 
补充说明:上面这段代码最下面定义的变量count就是取出数据库中的数据总条数。select语句中嵌套的select语句就表示查询数据库中数据的总条数,可以单独列出来写噢
3)下面的工作就是需要定义几个分页会用到的变量
num_pages:总页数 , last_page :尾页 , has_previous :判断当前页是否有前一页, has_next :判断当前页是否有下一页,
previous_page_number :当前页的前一页 ,next_page_number :当前页的后一页,具体的定义如下:
4)之后要做的就是要把在.py文件中定义的变量们传给.html文件咯~~我们用return render_to_response完成:
5)不过要注意点,我们之前打开的cur和conn都需要关闭。
cur.close()
conn.close()
这样,我们的.py文件就写好啦~呼呼
3、html文件的编辑
有了上面的基础~html文件的思路就很明确嘞,就是把刚刚提交的变量们按照你喜欢的位置输出,来看代码吧:
4、现在我们的页面还不能运行~因为服务器还找不到我们的代码。下面需要做的就是修改urls.py和settings.py文件了
1)在urls.py文件的urlpatterns = patterns中加入 (r'^test/$','hui.test.getdata'), 其中具体的名字因情况而定
2)在settings.py文件的TEMPLATE_DIRS 中加入 './templates', 这是我们自定义的模板文件夹,来存放html文件
5,、现在启动服务器,在地址栏里输入相关的地址就可以嘞~~别忘了~要显示第一页地址中别少了 /?page=1噢……
Django中,你可以使用内置的ORM(Object-Relational Mapping)框架来操作MySQL数据库,并进行分页。以下是一个简单的步骤来实现分页: 1. 首先,确保你已经在`settings.py`文件中配置了数据库连接,例如: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 使用mysql引擎 'NAME': 'your_database_name', 'USER': 'your_username', 'PASSWORD': 'your_password', 'HOST': 'localhost', # 如果不是本地,替换为你服务器的地址 'PORT': '3306', # MySQL默认端口 } } ``` 2. 在视图函数中,假设有一个模型`Article`,你可以使用`paginate_by`来自Django的`Paginator`类来进行分页。例如: ```python from django.core.paginator import Paginator def article_list(request): articles = Article.objects.all() # 获取所有文章 paginator = Paginator(articles, per_page=10) # 每页显示10篇文章 page_number = request.GET.get('page') try: articles = paginator.page(page_number) except PageNotAnInteger: articles = paginator.page(1) # 如果页面编号无效,则返回第一页 except EmptyPage: articles = paginator.page(paginator.num_pages) # 如果请求的页面超出范围,则返回最后一页 return render(request, 'article_list.html', {'articles': articles}) ``` 在这个例子中,我们设置了每页显示10篇文章。用户可以通过URL中的`page`参数来导航到不同的页。 3. 最后,在模板`article_list.html`中,你可以使用循环遍历分页后的文章列表: ```html {% for article in articles %} <!-- 显示文章内容 --> {% empty %} <p>没有更多文章了。</p> {% endfor %} <!-- 分页链接 --> <ul class="pagination"> {% if articles.has_previous %} <li><a href="?page={{ articles.previous_page_number }}">上一页</a></li> {% endif %} {% for page in articles.paginator.page_range %} {% if page != articles.number %} <li><a href="?page={{ page }}">{{ page }}</a></li> {% else %} <li class="active"><span>{{ page }}</span></li> {% endif %} {% endfor %} {% if articles.has_next %} <li><a href="?page={{ articles.next_page_number }}">下一页</a></li> {% endif %} </ul> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值