小编Ste*_*ith的帖子

Django 和 ChartJS

我试图了解是否可以将动态数据合并到 Django Chart JS 架构中。我浏览了几个教程,最终让 Django 与 ChartJS 一起工作,当我能够对值进行硬编码然后显示相关图表时,这非常好。我最终想要做的是对我的数据库中的动态数据进行同样的练习。我在 SO 中发现了这个相同的问题,/sf/ask/3330312751/# =但没有人回答。这正是我想要实现的目标。我已经探索了一些序列化器,我需要先序列化数据吗?预先感谢您的想法和反馈。

根据反馈,我已在相关图表中添加了上下文,但数据仍未通过。这是我的观点:

class ChartView(LoginRequiredMixin, TemplateView):

    model = Myobject 
    template_name = 'director/chart.html'

      def get_context_data(self, **kwargs):
          context = super(ChartView, self).get_context_data(**kwargs)  
          myobject = Myobject.objects.filter(field__in=self.request.user.userprofile.field.all())
          print(myobject)
          context['myobject'] = myobject
          return context
Run Code Online (Sandbox Code Playgroud)

我只是得到一个空白屏幕,根本没有图表,这表明有些地方显然有问题。我是否需要对 Javascript 进行其他更改才能告诉它有关该对象的信息?我的假设是否定的,我正在传递此信息查看 context_data。

我也在使用 Ajax,所以我不确定这是否是一个复杂的因素。这是我的 javascript。

<script>
var endpoint = '{% url "myobject:chart_data" %}'
var defaultData = [];
var labels = [];
$.ajax({
    method: "GET",
    credentials: 'same-origin',
    url: endpoint,
    success: function(data){
        labels = data.labels
        defaultData = data.default
        var ctx …
Run Code Online (Sandbox Code Playgroud)

django django-models django-views python-3.x chart.js

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

Django 两步验证

我最近一直在阅读有关 django-two-factor-authentication 的文档,我在这里找到了:https : //django-two-factor-auth.readthedocs.io/en/stable/installation.html 文档很棒。但是,我正在尝试了解此解决方案的完整要求。如果我实现了这个包,那么我是否需要依赖第三方来完成这个解决方案,还是可以在没有第三方的情况下实现两因素身份验证?我主要关心的是与插入第三方相关的成本。如果可以避免,显然我更喜欢免费。如果无法避免,是否有人对提供两因素身份验证的任何第三方提供商有经验?我对 Twillio 进行了一些研究,但我知道还有其他人也执行此服务。提前感谢您的任何意见。

django django-models django-forms django-views django-rest-framework

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

如何正确自定义 Django LoginView

我试图弄清楚如何根据用户当天是否第一次登录来自定义 django LoginView。我当前已设置 LoginView,使其默认为 settings.py 文件中的 LOGIN_REDIRECT_URL = "book:author" 。这工作完美无缺。当用户登录并成功通过身份验证时,他们将被重定向到“book:author”,正如我所期望的那样。

我想做的是,如果这是用户当天第一次登录,则将他们定向到一个 URL,如果是当天的任何其他登录迭代,则将他们重定向到另一个 URL。我已经阅读了有关如何执行此操作的各种方法,使用消息传递而不是条件 URL 重定向来使用 NEXT 参数,并且我试图找出哪种方法是最好、最安全和正确的方法。

这是我的默认登录视图...(没什么花哨的)

class LoginView(LoginView):
    template_name = 'registration/login.html'
    form_class = AuthenticationForm
Run Code Online (Sandbox Code Playgroud)

然后它根据我的 settings.py 文件定义进行重定向......

    LOGIN_REDIRECT_URL = "book:author" 
Run Code Online (Sandbox Code Playgroud)

将当天首次登录重定向到不同 URL 的最佳方法是什么?

在此先感谢您的任何建议。

我找到了这个 SO 答案Django -- Conditional Login Redirect,它似乎就是我正在寻找的。使用底部的示例有什么缺点吗?

与基于函数的示例相比,如何使用 LoginView?

django django-templates django-forms django-views

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

禁用 ModelMultipleChoiceField CheckBoxSelectMultiple Django 中的选择

全部,

我研究了几天,似乎找不到我要找的东西。我很清楚使用以下方法来禁用 Django 表单中的字段:

self.fields['author'].disabled = True
Run Code Online (Sandbox Code Playgroud)

上述将完全禁用一个字段。我正在尝试显示一个具有多个选择选项的复选框,但我希望自动选择并禁用其中一个选项,以便用户无法将其更改为他们选择的选项之一。这是我用来显示复选框的代码,它工作正常:

self.fields['author'] = forms.ModelMultipleChoiceField(
                        queryset=User.objects.all(),  
                        widget=forms.CheckboxSelectMultiple(),
                        initial = user.favorite)
Run Code Online (Sandbox Code Playgroud)

user.favorite 按我的预期显示,但我想禁用它,以便它仍然处于选中状态,但用户无法更改它,但他们仍然可以在复选框中选择其他内容。这可能吗?提前致谢。

django-templates django-models django-forms django-views python-3.x

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

如何在Python中增加数字字符串

过去两天我一直在尝试弄清楚如何在 Python 中递增数字字符串。我试图在创建记录时增加序列号。我昨天花了一整天的时间尝试将其作为整数来执行,它工作正常,但我永远无法让数据库存储前导零。我在 StackOverflow 中对这个主题进行了广泛的研究,虽然有几个示例说明如何将其作为整数并存储前导零,但这些示例都不适合我。许多例子都是 2014 年的,所以方法可能已经改变了。然后,我切换到 String 并将属性更改为 CharField,并且可以让该函数使用前导零,但现在我似乎无法让它递增。再说一次,我在 SO 上找到的例子是 2014 年的,所以也许事情已经发生了一些变化。这是有效的函数,但每次我调用它时,它都不会增加。它只是返回 00000001。我确信这是我没有做的简单事情,但我没有主意。在此先感谢您的帮助。这是可以工作但不增加的函数。

def getNextSeqNo(self):
    x = str(int(self.request_number) + 1)
    self.request_number = str(x).zfill(8)
    return self.request_number
Run Code Online (Sandbox Code Playgroud)

这是该字段的定义:

request_number = models.CharField(editable=True,null=True,max_length=254,default="00000")
Run Code Online (Sandbox Code Playgroud)

我添加了默认值“00000”,因为如果不存在,系统会给出以下错误:

int() argument must be a string, a bytes-like object or a number, not 'NoneType'
Run Code Online (Sandbox Code Playgroud)

我意识到我的代码基本上是将我的默认值增加 1,这就是为什么我总是得到 00000001 作为我的序列号。似乎无法弄清楚如何获取当前数字然后加 1。任何帮助都会受到赞赏。

python django django-models postgresql-9.4 python-3.6

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

如何将 Reportlab 与 Django 基于类的视图合并?

我正在尝试将我的 HTML 转换为 PDF。我观看了本教程https://www.codingforentrepreneurs.com/blog/html-template-to-pdf-in-django/并且我能够成功地让教程使用硬编码值。问题是......我无法弄清楚如何将我的模型及其属性动态合并到这个示例中。

这是我遵循的步骤...

首先,我使用以下版本将 reportlab 安装到我的环境中...

pip install --pre xhtml2pdf 
Run Code Online (Sandbox Code Playgroud)

这工作...

然后我按照指示在我的项目中添加了一个 utils.py 文件。

然后我将此代码复制到我的 utils.py 文件中...

from io import BytesIO
from django.http import HttpResponse
from django.template.loader import get_template

from xhtml2pdf import pisa

def render_to_pdf(template_src, context_dict={}):
    template = get_template(template_src)
    html  = template.render(context_dict)
    result = BytesIO()
    pdf = pisa.pisaDocument(BytesIO(html.encode("ISO-8859-1")), result)
    if not pdf.err:
        return HttpResponse(result.getvalue(), content_type='application/pdf')
    return None
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个如下所示的 HTML 文件:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Title</title>
        <style type="text/css">
            body {
                font-weight: …
Run Code Online (Sandbox Code Playgroud)

django reportlab django-templates django-models django-views

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