python – Django发布和回复

python – Django发布和回复,第1张

概述这不是一个技术问题,更像是“我是以正确的方式做这件事”的问题. 我定义了几个模型 class Style(models.Model): tag_xml = models.TextField() image = models.ImageField(upload_to="styles") user = models.ForeignKey(User) uploaded = 这不是一个技术问题,更像是“我是以正确的方式做这件事”的问题.

我定义了几个模型

class Style(models.Model):    tag_xml = models.TextFIEld()    image = models.ImageFIEld(upload_to="styles")    user = models.ForeignKey(User)    uploaded = models.DateFIEld()class StyleMatch(models.Model):    style = models.ForeignKey(Style)    item = models.ForeignKey(FashionItem)

由于任务的性质,它们无法通过HTML表单填充,因此为了填充它们,我有一个带有jquery和许多事件函数以及其他JavaScript好东西的HTML页面.单击保存按钮时,我调用.AJAX()并传递所有收集的变量

var saveRequest= $.AJAX({url: "/save_style/",type: "POST",data: "selection="+s+"&user="+user+"&src="+image_src,dataType: "text"    });

然后我的save_style视图将值保存到模型中

def save_style(request):if request.method == 'POST':    selection = request.POST['selection'].rsplit("|")    user = request.POST['user']    src = request.POST['src']    f = open(MEDIA_ROOT+src)    image_file = file(f)    u = User.objects.get(ID=user)    style = Style(tag_xml = "",image = image_file,user = u,uploaded = date.today())    style.save()    for s in selection:        if (s != ''):            match = FashionItem.objects.get(ID=s)            styleMatch = StyleMatch(style = style,item = match)            styleMatch.save()    i = StyleMatch.objects.filter(style=style)    items = FashionItem.objects.filter(ID__in=i)   return render_to_response('style_saved.HTML',dict(image=src,items=items,media_url = MEDIA_URL),context_instance=RequestContext(request))

执行此 *** 作后,我真的想要转到成功页面并显示我刚刚添加到模型中的记录,但是如果我使用render_to_response并传回模型详细信息,我必须在JavaScript中重建整个页面,重定向似乎更好到一个新模板,但如果我使用httpResponseRedirect a)我不能传回值和b)它似乎没有重定向到正确(我认为因为帖子来自我的JavaScript).

最后我的问题

>这真的是我应该这样做吗? django doc没有
真的好像覆盖了这些稍微复杂的区域,所以我就是一个
很不确定.
>我应该使用render_to_response还是
httpResponseRedirect上面?或者可能是我不知道的第三种选择
关于.

任何建议赞赏.

仅供参考我知道上面的代码并不理想,即缺少验证,评论……等,它仅仅是为了演示目的而提供的.尽管如此,请随时指出任何严重的问题.

解决方法 根据应用程序的性质,您可能不应该使用JavaScript构建整个页面.但是,因为我们已经在那里使用了以下解决方案,结果很好:

考虑创建一个模板“片段”,我称之为.它只是一些HTML,旨在成为通过AJAX传输数据的封装.对此片段执行render_to_response,将处理后的视图数据作为变量传入,然后通过AJAX检索此数据并使用JavaScript将指定div元素中的HTML替换为返回的数据.

上述解决方案存在一些缺陷,例如模板片段上的样式和事件处理程序附件,但它至少应该让您工作.只是这方面的一个提示,熟悉jquery的.on().

总结

以上是内存溢出为你收集整理的python – Django发布回复全部内容,希望文章能够帮你解决python – Django发布和回复所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1196618.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存