标签: django-views

在不返回404的情况下验证django视图中是否存在对象的正确方法是什么?

我需要验证一个对象是否存在并返回该对象,然后根据该执行操作.在没有返回404的情况下,这样做的正确方法是什么?

try:
    listing = RealEstateListing.objects.get(slug_url = slug)
except:
    listing = None

if listing:
Run Code Online (Sandbox Code Playgroud)

django django-views

85
推荐指数
3
解决办法
6万
查看次数

在django中,模型有一个默认的时间戳字段吗?

在django中 - 是否有所有对象的默认时间戳字段?也就是说,我是否必须在我的模型中为'created on'显式声明'timestamp'字段 - 或者有没有办法自动获得它?

django django-models django-views

80
推荐指数
4
解决办法
6万
查看次数

django模板中"none"的等价物是什么?

我想看看Django模板中的字段/变量是否为空.这个的正确语法是什么?

这就是我目前拥有的:

{% if profile.user.first_name is null %}
  <p> -- </p>
{% elif %}
  {{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif%}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我将用什么来代替"null"?

python django django-templates django-forms django-views

79
推荐指数
5
解决办法
8万
查看次数

Django视图返回json而不使用模板

这与此问题有关:Django根据客户端python返回json和html

我有一个django应用程序的命令行python api.当我通过api访问应用程序时它应该返回json并且使用浏览器它应该返回html.我可以使用不同的URL来访问不同的版本,但是如何使用一个模板在views.py中呈现html模板和json?

要呈现我将使用的HTML:

return render_to_response('sample/sample.html....')
Run Code Online (Sandbox Code Playgroud)

但是如果没有放入json模板,我将如何为json做同样的事情呢?(内容类型应该是application/json而不是text/html)

编辑1:

什么会决定json和html输出?

所以在我看来:

if something:
    return render_to_response('html_template',.....)
else:
    return HttpReponse(jsondata,mimetype='application/json')
Run Code Online (Sandbox Code Playgroud)

谢谢

python django json django-views

77
推荐指数
5
解决办法
10万
查看次数

Django检查查询是否存在

在django中如何检查查询是否存在任何条目

sc=scorm.objects.filter(Header__id=qp.id)
Run Code Online (Sandbox Code Playgroud)

这就是它在php中的表现

if(mysql_num_rows($resultn)) {
    // True condition
    }
else {
    // False condition
    }
Run Code Online (Sandbox Code Playgroud)

python django django-views

76
推荐指数
2
解决办法
8万
查看次数

仅更新models.Model中的特定字段

我有一个模特

class Survey(models.Model):
    created_by = models.ForeignKey(User)
    question = models.CharField(max_length=150)
    active = models.NullBooleanField()
    def __unicode__(self):
        return self.question
Run Code Online (Sandbox Code Playgroud)

现在我想只更新active字段.所以我这样做:

survey = get_object_or_404(Survey, created_by=request.user, pk=question_id)
survey.active = True
survey.save(["active"]) 
Run Code Online (Sandbox Code Playgroud)

现在我收到一个错误IntegrityError: PRIMARY KEY must be unique.

我是否正确使用此方法进行更新?

django django-models django-views django-database

76
推荐指数
2
解决办法
8万
查看次数

django @login_required超级用户的装饰器

django中是否有类似于@login_required的装饰器,它还测试用户是否是超级用户?

谢谢

django django-views

72
推荐指数
3
解决办法
2万
查看次数

处理Django request.GET和多个变量用于相同的参数名称

在django视图等中,您可以访问request.GET ['variablename'],因此在您的视图中,您可以返回执行以下操作:

myvar = request.GET['myvar']
Run Code Online (Sandbox Code Playgroud)

实际的request.GET ['myvar']对象类型是:

<class 'django.http.QueryDict'>
Run Code Online (Sandbox Code Playgroud)

现在,如果你想为同一参数名传递多个变量,即

http://example.com/blah/?myvar=123&myvar=567

换句话说,您希望为参数myvar返回一个python 列表

基本上我想做的就是这样

for var in request.GET['myvar']:
    print(var)
Run Code Online (Sandbox Code Playgroud)

但是,当您尝试这样时,您只获得在url中传递的最后一个值,即在上面的示例中,您将得到567

shell中的结果将是:

5
6
7
Run Code Online (Sandbox Code Playgroud)

但是,当你打印request.GET它似乎有一个列表,即:

<QueryDict: {u'myvar': [u'123', u'567']}>
Run Code Online (Sandbox Code Playgroud)

好的更新:它的目的是返回最后一个值,我的用例是我需要一个列表.

来自django docs:

的QueryDict.getitem(key)返回给定键的值.如果键具有多个值,则 getitem()将返回最后一个值.如果密钥不存在,则引发django.utils.datastructures.MultiValueDictKeyError.(这是Python标准KeyError的子类,因此您可以坚持捕获KeyError

QueryDict.getlist(key)以Python列表的形式返回带有请求键的数据.如果密钥不存在,则返回空列表.它保证返回某种列表.

更新:如果有人知道为什么django dev已经这样做了,请让我知道,显示一个列表似乎反直觉,它不像一个.不是pythonic!

django django-urls django-views

71
推荐指数
1
解决办法
5万
查看次数

Django DoesNotExist

我在试图找出"DoesNotExist错误"时遇到问题,我试图找到管理无应答结果的正确方法,但是我继续遇到"DoesNotExist"或"对象没有属性DoestNotExists"的问题

from django.http import HttpResponse
from django.contrib.sites.models import Site
from django.utils import simplejson

from vehicles.models import *
from gpstracking.models import *


def request_statuses(request):

    data = []
    vehicles = Vehicle.objects.filter()
    Vehicle.vehicledevice_
    for vehicle in vehicles:
        try:
            vehicledevice = vehicle.vehicledevice_set.get(is_joined__exact = True)
            imei = vehicledevice.device.imei
            try:
                lastposition = vehicledevice.device.devicetrack_set.latest('date_time_process')
                altitude = lastposition.altitude
                latitude = lastposition.latitude
                longitude =  lastposition.longitude
                date_time_process = lastposition.date_time_process.strftime("%Y-%m-%d %H:%M:%S"),
                date_time_created = lastposition.created.strftime("%Y-%m-%d %H:%M:%S")
            except Vehicle.vehicledevice.device.DoesNotExist:
                lastposition = None
                altitude = None
                latitude = None
                longitude = None
                date_time_process = …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-views

71
推荐指数
4
解决办法
9万
查看次数

Django请求获取参数

在Django请求中,我有以下内容

POST:<QueryDict: {u'section': [u'39'], u'MAINS': [u'137']}>
Run Code Online (Sandbox Code Playgroud)

如何获得的价值sectionMAINS

if request.method == 'GET':
    qd = request.GET
elif request.method == 'POST':
    qd = request.POST

section_id = qd.__getitem__('section') or getlist....
Run Code Online (Sandbox Code Playgroud)

python django django-models django-views

70
推荐指数
2
解决办法
11万
查看次数