小编use*_*803的帖子

django 简单历史 - 使用模型方法?

我正在使用django-simple-historyhttp://django-simple-history.readthedocs.io/en/latest/
我有一个模型,我想将其方法应用于历史实例。例子:

from simple_history.models import HistoricalRecords

class Person(models.Model):
   firstname = models.CharField(max_length=20)
   lastname = models.CharField(max_length=20)
   history = HistoricalRecords()
   def fullName(self):
       return firstname + lastname

person = Person.objects.get(pk=1) # Person instance
for historyPerson in person.history:
    historyPerson.fullName() # wont work.
Run Code Online (Sandbox Code Playgroud)

由于HistoricalPerson类没有继承Person的方法。但使用 Person 方法实际上是有意义的,因为它们共享相同的字段。

有什么解决办法吗?我更喜欢简单的东西,而不是像为历史实例复制模型中的每个方法一样。

python django methods model django-simple-history

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

svg里面的<button>元素?

我有一个交互式SVG - 以全窗口大小显示.我想为它添加一些按钮.是否可以<button><svg>标签内添加普通元素?
我想不是,但我问的是SVG是否有类似的东西.
从一些图纸我得到这样的坏结果:https:
//jsfiddle.net/pvxr6g8k/1/

<svg version="1.1" id="svg9723" height="768" width="1268">
<g style="fill:#e6e6e6" id="g3332-7" transform="matrix(0.27404175,0,0,-0.447665,86.580009,508.16151)">
      <g style="fill:#e6e6e6" clip-path="url(#clipPath3336-0-0)" id="g3334-7">
        <g style="fill:#e6e6e6" transform="translate(992.5469,164.3086)" id="g3340-6">
          <path inkscape:connector-curvature="0" id="path3342-2" style="fill:#e6e6e6;stroke:#241a5d;stroke-width:4.48957968;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" d="m 0,0 c -6.937,0 -12.58,5.645 -12.58,12.58 l 0,63.277 c 0,6.937 5.643,12.581 12.58,12.581 l 279.488,0 c 6.936,0 12.58,-5.644 12.58,-12.581 l 0,-63.277 C 292.068,5.645 286.424,0 279.488,0 L 0,0 Z"></path>
        </g>
      </g>
    </g>
    <text transform="scale(0.9324557,1.072437)" id="text3390-1" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:11.87269115px;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" x="413.18262" y="390.15326">
      <tspan style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold'" y="390.15326" x="413.18262" id="tspan3392-0" …
Run Code Online (Sandbox Code Playgroud)

javascript css svg button

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

等待 jQuery.when ajax 请求

异步函数内的这段代码没有给出预期的结果:

var result = await $.when( $.get('/api/1'), $.get('/api/2') );
Run Code Online (Sandbox Code Playgroud)

对于一个请求,结果将是我期望的输出(响应文本)。但是,对于这两个请求,返回的result是一个不包含两个 Promises 值的数组。有什么解决方法吗?
我知道有then()done(),但我更喜欢使用await。

ajax jquery promise async-await .when

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

vue js + django应用程序架构

我发现了一些关于此的帖子.但我仍然感到困惑.
我想使用django rest framework api来被vue使用.我的问题:

  1. 我应该使用django模板吗?我猜不是,导致django模板语法与vue发生冲突.但我仍需要提供模板 - 我应该只使用带有apache的静态模板吗?

  2. 假设我使用静态模板,我如何使用django模板预渲染页面?
    我的意思是,使用django我有一个像/ resource?id = 5的网址,
    但是使用rest api,从网址获取id = 5资源并进行渲染将是vue的责任,但我不喜欢需要额外的xhr.

  3. 似乎所有的文档都假设我使用node.js,我没有.除了django apache服务器之外,我还必须使用另一个node.js服务器吗?

  4. 使用webpack/npm的vue.js 强制使用特定的app文件夹结构吗?如何使用正常的django项目结构?

api django vue.js

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

PIL 和使用 asyncio 阻塞调用

我有一个 asyncio 应用程序,它使用服务器 fromaiohttp和异步套接字asyncio.open_connection()

我的代码包含来自 PIL 库的一些阻塞调用,例如

Image.save()
Image.resize()
Run Code Online (Sandbox Code Playgroud)
  1. 即使调用不会阻塞太长时间,如果我使用这些阻塞调用,我的 Web 服务器是否会冻结?更准确地说,事件循环是否有可能因为阻塞代码而错过事件?
  2. 如果是,与 asyncio 集成的这些功能的替代品是什么?没有异步版本的 PIL。
  3. 一般来说,什么被认为是 asyncio 中的“阻塞代码”?除了像socket,读文件等明显的操作。
    例如,是否os.path.join()被认为可以?在numpy数组上工作怎么样?

python numpy blocking python-imaging-library python-asyncio

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

djangorest框架-外键字段是只读的

该模型:

class Item(models.Model):
    company = models.ForeignKey(Company, on_delete=models.CASCADE)
    item_num = models.IntegerField()
    # other fields...
    class Meta:
       unique_together = [('company', 'item_num') ]
Run Code Online (Sandbox Code Playgroud)

序列化器:

class ItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item
        fields = ('company_id', 'item_num', ) 
Run Code Online (Sandbox Code Playgroud)

问题是 django Rest 框架ReadOnlyField()为该company_id字段生成一个 ,因此当我在视图代码中创建一个新实例时,该字段不可编辑,如下所示:

s = ItemSerializer(data=request.POST)
s.save()
Run Code Online (Sandbox Code Playgroud)

UniqueTogetherValidator我还丢失了模型中定义的默认值。不过,如果我将序列化器字段名称从“company_id”更改为“company”,我确实会得到验证器,因为 drf 将生成,PrimaryKeyRelatedField因此它将是可编辑的。

我如何仍然将外键对象命名为“company_id”,因为我更喜欢这样命名它们,并且仍然获得默认的验证和保存行为?最好不要向序列化器添加太多代码。

python django django-rest-framework

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

从 loop.create_task() 引发的 python asyncio 异常

我希望我的代码使用 pythonlogging来记录异常。在我通常使用的代码中await,通常会引发异常,因此:

try: await code_that_can_raise() except Exception as e: logger.exception("Exception happended")

工作正常。

然而,当使用 loop.create_task(coro())

我不确定如何在此处捕获异常。
包装 create_task() 调用显然不起作用。在代码中记录每个异常的最佳解决方案是什么?

python logging exception python-asyncio python-logging

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

python grpc客户端如何管理连接?

grpc 客户端何时创建和关闭连接?
我以以下方式开始代码:

channel = grpc.insecure_channel('localhost:8888')
stub = myservice_pb2_grpc.MyServiceStub(channel)
Run Code Online (Sandbox Code Playgroud)

声明 a 是否会channel在进程的整个生命周期内创建一个套接字?
因为即使我提供了无效的地址,insecure_channel()在发出第一个请求之前我也看不到任何错误。

或者,套接字仅在发出请求时创建并随后关闭?

python sockets connection grpc grpc-python

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

bootstrap datetimepicker - 相对于现在设置 maxDate?

我使用这个 datetimepicker:
http : //eonasdan.github.io/bootstrap-datetimepicker/Options/
基本上我想设置maxDate: moment(),即 maxDate 应该限制到现在。问题是当 datepicker 打开时 maxDate 不再是 now() 了。每次显示日期选择器时,我都想将它的 maxDate 设置为 now 。

如果可能,我想在全球范围内强制执行它,而不是在每个datetimepicker()实例上都指定它。是否可以使用 moment.js 以某种方式给出一个相对日期?

看到这个小提琴:
https :
//jsfiddle.net/0Ltv25o8/3281/ 我将 maxDate 设置为现在。您将在页面加载一分钟后看到,您将无法使用箭头按钮选择当前分钟。

javascript maxdate twitter-bootstrap momentjs eonasdan-datetimepicker

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

django rest 框架 - 会话身份验证与令牌身份验证,csrf

我使用默认设置设置了 DRF。我的 ajax 客户端使用会话身份验证工作正常。我希望另一个远程服务器使用与 javascript 客户端相同的 API。

我的登录代码很简单:

class Login(APIView):
    def post(self, request, *args, **kwargs):

        user = authenticate(username=username, password=password)

        if user is None:
            return Response(status=status.HTTP_401_UNAUTHORIZED)

        login(request, user)
        # ...
Run Code Online (Sandbox Code Playgroud)

问题是当我使用来自另一台主机的客户端时,例如 python requests,我收到 CSRF 错误。根据 DRF 文档,我认为我应该改用令牌身份验证。

问题:

  1. 为什么我需要令牌认证?sessionid cookie 已经是一个令牌,为什么我不能同时用于 ajax 客户端和软件客户端?因此避免为令牌使用另一个单独的数据库表。

  2. 由于我只想使用会话身份验证,如何仅对 ajax 客户端强制执行 CSRF?

django django-csrf django-rest-framework

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