我的网站几乎完成了,除了最后一部分,我需要使图库页面支持ajax才能使用Ajax更改页码。
图库页面视图:
def gallerypages(request, page):
items = Example.objects.all().order_by('-pk')
categories = Categorie.objects.all()
paginator = Paginator(items, 12)
try:
itemsList = paginator.page(page)
except PageNotAnInteger:
itemsList = paginator.page(1)
except EmptyPage:
itemsList = paginator.page(paginator.num_pages)
if items.count()>1:
return render_to_response('gallery.html', {'items': itemsList,'categories': categories,}, context_instance = RequestContext(request))
Dajax / Dajaxice的记录不是很好…我只需要显示一些图像即可。
这是使用Dajax / Dajaxice的方法,这是为了在Django中简化AJAX:
pip
,即pip install django-dajaxice
pip install django-dajax
获取库。无论如何,请确保遵循doc说明安装Django应用,并将必需的Javascript库加载到中gallery.html
。(请注意,您需要安装jQuery或类似的JS框架才能使Dajax正常工作。)
gallery.html
,将items
和categories
呈现为HTML 的部分隔离。将此部分复制到一个单独的Django模板中,例如,gallery_content.html
然后用特定ID gallery.html
的空白替换该部分<div>
,例如<div id="gallery-content"></div>
您正在做的是#gallery-content
为HTML 创建一个占位符,稍后将通过Dajaxice调用为每个页面生成HTML。
gallery.html
,为用户创建一种告诉您要转到哪个页面的方法,例如 <input id="page-number">
<button onclick="Dajaxice.myapp.gallerypages_content(Dajax.process, {'page': document.getElementById('page-number').value})">Go to page</button>
Javascript onclick
代码(每当用户单击按钮元素时都会调用)执行两件事:(1)获取#page- number
输入元素的值,以及(2)gallerypages_content
异步将其发送到Django
视图,即没有正常的网络通过Dajaxice.myapp.gallerypages_content
Javascript调用加载浏览器页面。请注意,myapp
应将其替换为Django应用的名称。
gallerypages_content
视图-这是现有gallerypages
视图的变体,已修改以与Dajaxice / Dajax一起使用。Dajaxice进行了硬编码以在中查找此类视图ajax.py
,因此请ajax.py
在您的myapp
文件夹中创建如下: from django.template.loader import render_to_string
from dajax.core import Dajax
from dajaxice.decorators import dajaxice_register
@dajaxice_register
def gallerypages_content(request, page):
page = int(page)
# ... code to calculate itemsList and categories as before ...
html = render_to_string('gallery_content.html',
{'items': itemsList,'categories': categories,},
context_instance = RequestContext(request))
dajax = Dajax()
dajax.assign('#gallery-content', 'innerHTML', html)
return dajax.json()
这就是上面的代码所做的:(1)将page
参数(现在是字符串)(即#page- number
输入元素的原始字符串值)转换为Python整数;(2)进行与之前相同的计算,得到itemsList
和categories
;
(3)用于render_to_string
呈现gallery_content.html
为HTML字符串,而不是普通的Django
HTTP响应;(4)使用Dajax API创建指令以将HTML注入#gallery- content
div;(5)作为视图的响应,并以JSON格式返回这些指令。onclick
处理程序中的Dajaxice调用实际上将接收这些指令并对其执行操作(严格来说,是由Dajax.process
回调执行此操作),从而导致HTML出现。请注意,您需要gallerypages_content
使用@dajaxice_register
-有助于Dajaxice将所有内容挂钩。
我还没有具体测试过任何一项,但这是基于我如何让Dajaxice / Dajax为我工作,我希望它对您有用-至少可以让您入门!
问题描述 我输入sqlite3 -version,显示版本变化,我安装项目依赖sqlite-devel 和python-devel没有更新,Python -V版本未变 问题出现的环境背景及自己尝试过哪些方法 我是初学者,在学习过程中怕版本不对,于是我就选择文章指定版本进行安装,尝试过的办法就是在网上找安装项目依赖命令,找了几个试都未成功 相关代码 粘贴代码文本(请勿用截图) ··· yum ins
问题内容: 我有一个树结构,其中每个都有一个父级和一个。每个节点都有一个,我想在其中选择进行查询,即该节点和所有父节点的标题。如何编写此查询? 单个标题的查询就是这样,但是就像我说的那样,我希望它扩展到整个父母分支。 干杯 尼克 问题答案: 您不能使用HQL进行递归查询。看到这个。如前所述,它甚至不是标准的SQL。您有两种选择: 编写特定于供应商的递归本机SQL查询 进行多个查询。例如: 我肯定会
一位同事与我分享了这段代码: 在gcc.godbolt.org上运行 GCC打印,Clang打印,MSVC抱怨缺少模板参数。 哪个编译器是正确的?
问题内容: 当我尝试启动我们的Java服务器时,出现此错误:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver 但是我在脚本所在的文件夹中有mysql-connector-java-5.1.22-bin.jar,并在运行脚本时使用它: 但是仍然得到这个。该怎么办?我正在使用CentOS服务器。 问题答案: 在中的 MANIFEST.MF 文
在使用AJAX时,我需要有人指导我建立函数更新数据库。当我单击Accept按钮时,Ajax请求将发送到服务器,服务器将执行字段post_status的更新值。开始时,字段post_status has的值为“pending”,执行查询更新后,该值将更改为“accepted”。我下一步该怎么办?请帮帮我。非常感谢你的帮助。 Posts表的数据库: 观点: 代码Javascript: 控制器的功能列表
问题内容: 我这里有一个尺寸为2156x1728的黑白png文件,我想使用AffineTransform旋转90度。生成的图像比例不正确。这是一些示例代码(假设我已将png文件成功加载到BufferedImage中): 输出如下: 输入宽度:2156 输入高度:1728 结果宽度:1942年 身高:1942 旋转如何返回如此完全无关的尺寸? 问题答案: 我不是专业人士,但是为什么不创建一个正确大小