小编jsa*_*ezs的帖子

是否可以在任务执行期间使用 django-celery-results 查询 celery 任务的状态?

我正在使用 Celery + RabbitMQ 在我的 Django 应用程序中排队任务,

我想使用 task_id 和 task_state 跟踪任务的状态。

为此,我创建了一个 TaskModel(Model) 来存储数据库中的 task_id、task_state 和一些附加数据。在任务执行时,一个新的 TaskModel 对象会随着任务的进行而保存和更新。一切正常。

但是,我仍然需要添加很多功能和特性以及错误保护等。那时我记得 celery 文档提到了 django-celery-results。

所以我遵循了 django-celery-results 文档说明。任务结果存储在默认 django 数据库中的专用表中,但是仅在任务结束后......而不是在 PENDING、STARTED 状态期间。

是否可以使用 django-celery-results 在 PENDING 和 STARTED 状态期间存储和查询任务?或不?

谢谢

python django django-celery

10
推荐指数
1
解决办法
3728
查看次数

如何在django-rest-framework中加入两个模型

假设我有两种型号:

level:

id
file_number
status


level_process:

process_ptr_id
level_id
Run Code Online (Sandbox Code Playgroud)

我想结合我上面的两个表,使用django-rest-framework在一个API中显示它.我正在寻找互联网上的例子,我找不到它...顺便说一下我使用的方式 python 2.7 , django 1.10.5 and djangorestframework 3.6.2

serializer.py

class LevelSerializer(serializers.HyperlinkedModelSerializer):
    id = serializers.ReadOnlyField()
    class Meta:
        model = Level
        fields = ('__all__')

class LevelProcessSerializer(serializers.ModelSerializer):
    level = LevelSerializer(read_only=True)

    class Meta:
        model = LevelProcess
        fields = ('__all__')

views.py

class ViewLevelProcessViewSet(viewsets.ModelViewSet):
    processes = LevelProcess.objects.all()
    serializer_class = LevelProcessSerializer(processes, many=True)
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

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

使用参数'()'和找不到关键字参数'{}来反向'login'.尝试过0种模式:[]

我正在尝试使用django登录视图实现登录页面,这里是代码:

urls.py

urlpatterns = patterns(
    '',
    url(r'^login/$', 'django.contrib.auth.views.login'),
    url(r'^logout/$', 'django.contrib.auth.views.logout'),
)
Run Code Online (Sandbox Code Playgroud)

和模板:

的login.html

{% extends 'base_cost_control.html' %}
{% block contentbase %}

{% if form.errors %}
    <p>Invalid user or password</p>
{% endif %}

<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
    {% csrf_token %}
    <div class="row" align="center">
    <br>
    <br>
    <h3> CONTROL DE COSTOS </h3>
    <br><br>
    <table>
        <tr>
            <td width=700px>{%include "partials/field.html" with field=form.username %}</td>
        </tr>
        <tr>
            <td width=700px>{%include "partials/field.html" with field=form.password %}</td>
        </tr>
        <tr>
            <td align="right"><input type="submit"  class="btn btn-info" name = "siguiente" id="siguiente"          value="Ingresar"/></td> …
Run Code Online (Sandbox Code Playgroud)

python django django-urls

4
推荐指数
1
解决办法
7423
查看次数

在点击事件中调用javascript里面的django网址

我在模板中有一个javascript onclick事件,我想从它调用一个带有id参数的django url,如下所示:

$(document).on('click', '.alink', function () {
        var id = $(this).attr('id');
        document.location.href ="{% url 'myapp:productdetailorder' id %}"
});
Run Code Online (Sandbox Code Playgroud)

当然这根本不起作用.任何的想法 ?

提前致谢 !!

javascript django jquery location-href

4
推荐指数
3
解决办法
1万
查看次数

在 Django/django-rest-framework 中使用 ModelSerializers 上传 base64 图像

我正在尝试使用 AngularJS 上传图像。

我有这样的模型:

class Profile(models.Model):
    user = models.OneToOneField(User)
    name = models.CharField(max_length=20)
    profile_picture = ImageField(upload_to=settings.MEDIA_ROOT, blank=True)
Run Code Online (Sandbox Code Playgroud)

我有序列化程序:

class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
Run Code Online (Sandbox Code Playgroud)

我有这样的视图:

class ProfileViewSet(viewsets.ModelViewSet):
    queryset = Profile.objects.all()
    serializer_class = ProfileSerializers
Run Code Online (Sandbox Code Playgroud)

我的帖子转储是这样的:

name: "David"
user: 1
profile_picture: ""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…917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6//U36fYf6Z697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv/1d+n2H+meve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r/9bfp9h/pnr3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6//Z""
Run Code Online (Sandbox Code Playgroud)

但是,给我 400 BAD REQUEST 错误。错误信息是:

{"profile_picture":["The submitted data was not a file. Check the encoding type on the form."]}
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

3
推荐指数
1
解决办法
4949
查看次数

Django空表单字段验证不适用于clean方法

我有一个django表单,我想验证当我要保存时字段不为空,让我们说例如"description"字段(charfield)....这是我的form.py代码:

from django.core.exceptions import ValidationError

class CostItemsForm(ModelForm):

    groupid = forms.CharField(required=True)

    def __init__(self, *args, **kwargs):
        super(CostItemsForm, self).__init__(*args, **kwargs)

    class Meta:
        model = CostItems
        fields = [
                    'description', 
                    'usd_value', 
                    'rer',
                    'pesos_value', 
                    'supplier', 
                    'position',
                    'observations',
                    'validity_date',
                ]

    def clean_description(self):
        des = self.cleaned_data['description']
        if des==None:
            raise ValidationError("Description cannot be empty")
        return des
Run Code Online (Sandbox Code Playgroud)

但没有任何反应,已经尝试过回到这样的:return self.cleaned_datareturn clean_description,但还是一样.

这是我的view.py:

class CostItemInsert(View):
    template_name='cost_control_app/home.html'

    def post(self, request, *args, **kwargs):
        if request.user.has_perm('cost_control_app.add_costitems'):
            form_insert = CostItemsForm(request.POST)
            if form_insert.is_valid():
                form_save = form_insert.save(commit = False) …
Run Code Online (Sandbox Code Playgroud)

python django validation django-forms

3
推荐指数
1
解决办法
6691
查看次数

Azure 上的 Django 应用程序没有获取静态文件

在 Azure webapp 上获得了我的 Django 项目,但是当我调用 SSH 终端时:

Python manage.py collectstatic

它说复制了 252 个文件,但我的静态文件在我的模板上不可见,wwwroot 中的静态文件夹是空的...这是我的 wwwroot 结构:

wwwroot
|---Myproject
|---manage.py
|---oryx-manifest.toml
|---hostingstart.html
|---static //With all my static files
??? myapp
?   ??? migrations
?   ??? __pycache__
?   ??? static
|   |   |---Images
|   |   |   |--myimage.png
|   |   |   |--myimage2.png
?   ??? templates
Run Code Online (Sandbox Code Playgroud)

这是我的settings.py:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
   ('myapp', os.path.join(BASE_DIR, 'myapp', 'static')),
)
STATICFILES_FINDERS = (
  'django.contrib.staticfiles.finders.FileSystemFinder',
  'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
Run Code Online (Sandbox Code Playgroud)

知道为什么或我做错了什么吗?Azure 收集不同吗? …

django azure django-staticfiles azure-web-app-service

2
推荐指数
2
解决办法
970
查看次数

Django模板标记网址不起作用

我收到此错误是由URL模板标记引起的:

在模板C:\ Users \不要恐慌\ BitNami DjangoStack项目\ Templates\polls\index.html,第5行的错误

我真的不知道为什么会这样.我尝试删除该行,它工作正常,所以我认为这是唯一一个导致麻烦的人.

(顺便说一句,我在Django 1.4.1)

此外,我已经尝试删除引号并删除第一行及其中的所有组合.帮我?

    1   {% load url from future %}
    2   {% if latest_poll_list %}
    3       <ul>
    4       {% for poll in latest_poll_list %}
    5           <li><a href="{% url 'polls.views.detail' poll.id %}">{{ poll.question }}</a></li>
    6       {% endfor %}
    7       </ul>
    8   {% else %}
    9       <p>No polls are available</p>
    10  {% endif %}
Run Code Online (Sandbox Code Playgroud)

django url

1
推荐指数
1
解决办法
708
查看次数

响应式联合js图

我使用联合 js 库在 html 中创建一个图表,但我需要它像 mi 站点一样响应。事实是,我将它放在一个带有 java 类的 div 中,该类打开并关闭此代码:

$('.open-down-up').click(function(){
  var nameMore = $(this).attr("name");
  var valMore = $(this).attr("value");
  if(valMore == 0){
      $(this).find('span').empty();
      $(this).find('span').append("&#9660;");
      $('div[id='+nameMore+']').slideDown("normal");
      $(this).attr("value","1");
  }else if(valMore == 1){
      $(this).find('span').empty();
      $(this).find('span').append("&#9658;");
      var n = nameMore.indexOf("process_process");
      $('div[id='+nameMore+']').slideUp("normal", function(){
          var n = nameMore.indexOf("process_process");
          if(n > -1){
              hide_panel_all();
          }
      });
      $(this).attr("value","0");
  }
});
Run Code Online (Sandbox Code Playgroud)

所以,我已经尝试过这样的事情:

var graph = new joint.dia.Graph;

var paper = new joint.dia.Paper({
 el: $('#modelCanvas'),
 gridSize: 10,
 height: $('#modelCanvas').height(),
 width: $('#modelCanvas').width(),
 gridSize: 1,
 model: graph,
});
Run Code Online (Sandbox Code Playgroud)

但它不起作用......我可以应用任何想法或方法?

提前致谢。

javascript jointjs responsive

1
推荐指数
1
解决办法
763
查看次数

Django PermissionRequiredMixin 重定向到带有消息的登录模板

我得到了这个视图,并且正在使用PermissionRequiredMixin它......它工作正常,但是当我重定向到登录模板(在设置中设置LOGIN_URL)时,我需要它显示一条消息,例如“您无权执行此操作”。知道如何在不创建自定义装饰器而仅使用PermissionRequiredMixin其自身的情况下做到这一点吗?

from django.contrib.auth.mixins import PermissionRequiredMixin

class MyView(PermissionRequiredMixin,View):

    template = 'myapp/item_detail.html'
    permission_required = 'myapp.change_item'


    def get(self, request, *args, **kwargs):
        #Query here
        return render(request, self.template)
Run Code Online (Sandbox Code Playgroud)

为了实现这一目标,我需要添加什么?

django django-templates django-permissions

1
推荐指数
1
解决办法
4532
查看次数