我已经构建了一个简单的Django照片应用程序.用户可以上传照片,关注其他用户和照片.为了处理用户之间的关系(跟随和取消关注),我使用了一个名为django-relations by coleifer的软件包.这是一个很棒的包,使用起来非常简单.
一切都按预期工作.我目前有一个工作活动Feed.
我将Feed分为两部分:跟随(我关注的用户的所有活动)和你(发生在我身上的所有活动).我在我的iOS应用程序下面发布了两张图片,它使用我的Django照片应用程序,因为它是后端:

我想要做的是添加聚合到以下Feed.正如你所看到的,用户alexperri喜欢5次射击.我想将所有这些项目合并为一行.我不需要为"你"提要添加聚合,因为我希望看到每个单独的操作都发生在我身上.但是对于以下Feed,添加聚合是有意义的.有几个应用程序可以很好地进行聚合.Fashionlista,Pinterest和Instagram做得很好.这是一个来自Instagram的例子来展示我想要实现的目标:

在上面的示例中,您可以看到以下Feed,而lovetoronto喜欢5张照片.我开始在播放后使用Instagram来查看它是如何工作的.Instagram关注源显示最多35个活动条目,每个条目最多可包含该活动类型的5个活动."lovetoronto喜欢5张照片"是一个活动条目,它显示了他喜欢的最新5张照片.由于lovetoronto进行了最新的动作,他处于领先地位.
我想实现相同的设置.
这是我目前的模型设置:
models.py
from django.db import models
from django.contrib.auth.models import User
class Photographer(models.Model):
user = models.OneToOneField(User, primary_key=True
likes = models.ManyToManyField('Photo', through = 'Likes',
related_name = 'likedby', blank = True)
class Photo(models.Model):
photographer = models.ForeignKey(Photographer, related_name = 'shot_owner')
created = models.DateTimeField(auto_now_add=True)
url = models.CharField(max_length=128)
class Likes(models.Model):
liked_at = models.DateTimeField(auto_now_add=True, blank=True, null=True)
photographer = models.ForeignKey(Photographer, related_name = 'liked_by')
photo = models.ForeignKey(Photo, null=True)
class Activity(models.Model):
actor = models.ForeignKey(Photographer, related_name = 'actor')
receiver = models.ForeignKey(Photographer, related_name …Run Code Online (Sandbox Code Playgroud) 我正在学习Django Rest Framework,也是django的新手.我想404在客户端访问未找到的资源时在json中返回自定义错误.
我urls.py看起来很喜欢这个:
urlpatterns = [
url(r'^mailer/$', views.Mailer.as_view(), name='send-email-to-admin')
]
Run Code Online (Sandbox Code Playgroud)
其中我只有一个资源,可以通过URI访问,http:// localhost:8000/mailer /
现在,当客户端访问任何其他URI,如http:// localhost:8000 /时,API应该返回如下404-Not Found错误:
{
"status_code" : 404
"error" : "The resource was not found"
}
Run Code Online (Sandbox Code Playgroud)
如果合适,请使用正确的代码段建议一些答案.
def display_home(request):
from datetime import *
now=datetime.today()
print 'Month is %s'%now.month
events=Event.objects.filter(e_date__year=datetime.today().year).filter(e_date__month=datetime.today().month,e_status=1).values('e_name','e_date')
return render_to_response("SecureVirtualElection/home.html",{'events': serializers.serialize("json",events, fields=('e_name','e_date'))},context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
error ::'dict'对象没有属性'_meta'
是否有任何简单的方法来覆盖DjangoJSONEncoder.ensure_ascii并将其设置为False或django.http.JsonResponse以任何其他方式输出非ascii文本?
如何使用ajax(json)的谷歌应用引擎?
现在我有这个,但我收到了这个错误:
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
import simplejson as json
class AjaxHandler(webapp.RequestHandler):
def post(self):
args = json.loads(self.request.body)
self.response.headers['Content-Type'] = 'application/json'
self.response.out.write('Hello, webapp World!')
application = webapp.WSGIApplication(
[('/AJAX', AjaxHandler)],
debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
和javascript + jquery:
var Server = function() {
};
Server.prototype = {
init: function(ajaxTargetUrl) {
this.ajaxTargetUrl = ajaxTargetUrl;
},
request: function(service, data) {
$.ajax({
url: …Run Code Online (Sandbox Code Playgroud) 我在Django 1.8工作,很难找到现代的方法来做到这一点.
这是我所拥有的,基于谷歌和这篇博文:
results = PCT.objects.filter(code__startswith='a')
json_res = []
for result in results:
json_res.append(result.as_dict())
return HttpResponse(json.dumps(json_res), content_type='application/json')
Run Code Online (Sandbox Code Playgroud)
然而,这给了我'PCT' object has no attribute 'as_dict'.
当然,现在一定有一个更简洁的方法吗?
我想知道是否可以使用JSONResponse但令人沮丧的是,文档没有给出如何将JSONRespose与查询集一起使用的示例,这必须是最常见的用例.我试过这个:
results = PCT.objects.filter(code__startswith='a')
return JsonResponse(results, safe=False)
Run Code Online (Sandbox Code Playgroud)
这给了[<PCT: PCT object>, <PCT: PCT object>] is not JSON serializable.
我正在写一个Django应用程序,虽然有点熟悉Django,但我对JavaScript很不熟悉.我在我的一个页面中添加了几行JavaScript以包含地图.
该脚本只包含初始化地图,然后根据保存在我的数据库中的信息添加标记.
鉴于代码太少,将脚本保留在HTML模板中并使用我的数据库传递信息仍然被认为是不好的做法{{info}}吗?
如果是这样,你认为哪种方法更好?
我是 Vue.js 的新手。如何将 JSON 数据从 Django 视图传递到 vue 实例(方法)。
视图.py
def articles(request):
model = News.objects.all() # getting News objects list
random_generator = random.randint(1, News.objects.count())
context = {
'title' : 'Articles' ,
'modelSerialize' : serializers.serialize('json',News.objects.all()),
'num_of_objects' : News.objects.count() ,
}
return render(request, 'articles.html',context)
Run Code Online (Sandbox Code Playgroud)
VueScript.js
new Vue({
el: '#list-Of-Articles-Displayed',
data: {
count: 0
},
ready: function() {
this.$http.get('http://127.0.0.1:8000/article/').then(function (response) {
response.status;
console.log(response);
}, function (response) {
alert("error ");
// error callback
});
}
})
Run Code Online (Sandbox Code Playgroud)
模板(文章.html)
<div id = "list-Of-Articles-Displayed" class = "col-lg-10" …Run Code Online (Sandbox Code Playgroud) 我有功能在视野中
from django.shortcuts import render
from .models import myModel
def articleTheme(request):
if request.method == 'POST':
article_id = request.POST['id']
article = myModel.objects.get(id=article_id)
theme = article.theme
return render(request, 'theme.html', {'newTheme': theme })
Run Code Online (Sandbox Code Playgroud)
现在它正常工作.但我有多余的HTML.我想要返回json对象.我可以导入和返回什么?
是否可以在没有模板的情况下创建函数?就像我正在尝试创建删除功能,我想做的是在单击删除按钮后立即删除某些内容,然后重定向到其他页面。
我想在用户可以编辑帖子的页面上放置一个删除按钮。html是这样的
<button type="submit" class="btn btn-outline-secondary">Save Changes</button>
</form>
Run Code Online (Sandbox Code Playgroud)
我想将删除按钮放在该按钮旁边。
def edit_entry(request, entry_id):
'''Edit a post.'''
entry = Entry.objects.get(id=entry_id)
if request.method != 'POST':
form = EditEntryForm(instance=entry)
else:
form = EditEntryForm(instance=entry, data=request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse_lazy('main:index'))
return render(request, 'main/edit_entry.html', {'entry': entry, 'form': form})
def delete_entry(request, entry_id):
'''Delete post'''
#I don't wanna create template for this function.
pass
Run Code Online (Sandbox Code Playgroud)
谁能给我提示吗?
我有一个Django模板,其中显示了从数据库接收的多个值,并将其传递给模板,如下所示:
在views.py中
def test1(requests):
requests.get...
requests.get...
requests.get...
someQuery = "select id from table;"
executeQ(someQuery)
someQuery = "select id from table;"
executeQ(someQuery)
someQuery = "select id from table;"
executeQ(someQuery)
context = Data1, Data2, Data3
return render_to_response('test1/index.html', context)
Run Code Online (Sandbox Code Playgroud)
在template / test1 / index.html中
<html>
......
<table>
<th> header1 </th>
<th> header2 </th>
<th> header3 </th>
{% for row in context %}
<td> row.1 </td>
<td> row.2 </td>
<td> row.3 </td>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
现在,我要通过Ajax更新那些row.1,row.2,row.3,而不必每次都重新分配页面。数据来自数据库。那么我在哪里以及如何放置一些Ajax()来实现Django?
对Django来说很新,所以我很抱歉,因为我确信这有一个简单的答案.
我有一个PHP背景,所以我猜我正试图强制我习惯的结构,而不是Django中的原生结构.
这是我的项目urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('pm.urls', namespace='pm')),
)
Run Code Online (Sandbox Code Playgroud)
这是我的应用程序urls.py
from django.conf.urls import patterns, url
from pm import views
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^label/add/$', views.add_label, name='label_add'),
)
Run Code Online (Sandbox Code Playgroud)
我正在对/ label/add /做一个AJAX Post请求,但它回来时出现500错误.
这是views.py:
from django.shortcuts import render
from pm.models import Label
import json
# Create your views here.
def index(request):
labels_list = Label.objects.order_by('name')
return render(request, 'pm/index.html', {
'labels' : …Run Code Online (Sandbox Code Playgroud) 我正在为应用程序设置webservices,我有以下模型:
class Parent(models.Model):
...
class Child(models.Model):
parent = models.ForeignKey(Course)
...
Run Code Online (Sandbox Code Playgroud)
关系是一对多(1父,多子)现在,我想获取所有父对象及其特定的子对象并将其作为JSON请求发送.是否有可能这样做而不必首先得到所有"孩子"并迭代他们寻找与特定父母相关的那些?我认为这对于真正的大型数据库来说效率极低,而且"Childs"不会在其他"Parents"中重复出现
非常感谢你