小编dar*_*rse的帖子

使用Django表单创建内联formset时出现这个奇怪的错误.我究竟做错了什么?

我的models.py看起来像这样:

class Member(models.Model):
    name = models.CharField(max_length=255)
    occupation = models.CharField(max_length=255)

class FamilyMember(models.Model):
    name = models.CharField(max_length=255)
    relation = models.CharField(max_length=255)
    member = models.ForeignKey(Member)
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试为成员表单中的家庭成员创建内联表单.为此,我使用inlineformset_factory:

来自django的导入表单来自myapp.models import*来自django.forms.models import inlineformset_factory

from django import forms
from myapp.models import *
from django.forms.models import inlineformset_factory

class MemberForm(forms.ModelForm):
    class Meta:
        model = Member
        fields = [
            'name', 'occupation',
        ]

FamilyMemberFormSet = inlineformset_factory(Member, FamilyMember)
Run Code Online (Sandbox Code Playgroud)

当我运行服务器时,我得到一个奇怪的错误:

"Calling modelformset_factory without defining 'fields' or "
django.core.exceptions.ImproperlyConfigured: Calling >modelformset_factory without defining 'fields' or 'exclude' explicitly is prohibited.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?谢谢.

python django django-forms

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

使用 JQuery PATCH 进行部分更新

好的,我的 URL(example.com/api/content/12) 以以下格式返回 JSON 数据:

{
    "title" : "My blog post",
    "body" : "Body",
    "data" : "old"
}
Run Code Online (Sandbox Code Playgroud)

我只想简单地更改数据字段。目前,我正在使用 PUT 并且基本上只是替换整个东西,我意识到这是低效的。像这样的东西:

var data = {
    "title" : "My blog post",
    "body" : "Body",
    "data" : "New data"
}

$.ajax({
   url: 'http://example.com/api/content/12',
   data: data,
   error: function() {
      console.log('Error');
   },
   dataType: 'json',
   success: function(data) {
      console.log('success');
   },
   type: 'PUT'
});
Run Code Online (Sandbox Code Playgroud)

我如何用 PATCH 做到这一点?我真的不需要发送标题和正文字段,因为它们不会改变。我只想更新数据字段。

ajax rest jquery json http

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

使用CSS更改svg图像的颜色

我的html文件中有以下svg图像:

<img class="svg" src="my-image-link.svg">
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试使用此css代码更改颜色:

.svg path {
    fill: black;
}
Run Code Online (Sandbox Code Playgroud)

然而,没有任何改变.使用css更改svg图像路径颜色的正确方法是什么?谢谢!

html css svg

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

如何像在 Django Admin 中一样在表单中创建外键链接字段?

在 django admin 中,如果两者之间存在关系,您可以添加、编辑甚至删除另一个模型中的对象。

例如,如果我的代码如下所示:

class Category(models.Model):
    ...

class Product(models.Model):
    ...
    category = models.ForeignKey(Category)
Run Code Online (Sandbox Code Playgroud)

当我使用 django 管理站点编辑/添加产品时,在类别字段中,我有 3 个按钮来添加/编辑/删除类别。将一个镜头添加到一个新窗口,一旦我提交表单,就会添加类别,关闭窗口,然后我返回到我的产品表单,并显示额外的类别。像这样:

在此处输入图片说明

如何使用表单在我的普通应用程序(管理员之外)中执行此操作?

django django-forms django-admin

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

有没有比 pickle 或常规 Python 文件更快的存储大字典的方法?

我想存储一个只包含以下格式数据的字典:

{
    "key1" : True,
    "key2" : True,
    .....
}
Run Code Online (Sandbox Code Playgroud)

换句话说,这只是一种检查密钥是否有效的快速方法。我可以通过在名为foo的文件中存储一个 dict 来做到这一点bar.py,然后在我的其他模块中,我可以按如下方式导入它:

from bar import foo
Run Code Online (Sandbox Code Playgroud)

或者,我可以将其保存在一个名为 的pickle 文件中bar.pickle,然后按如下方式将其导入到文件顶部:

import pickle  
with open('bar.pickle', 'rb') as f:
    foo = pickle.load(f)
Run Code Online (Sandbox Code Playgroud)

哪种方法是理想且更快的方法?

python pickle

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

使用 Lambda 从 S3 获取图像在 Python 中返回一个白框

我正在尝试从 S3 存储桶获取图像并将其返回。这是代码:

import base64
import boto3
import json
import random

s3 = boto3.client('s3')

def lambda_handler(event, context):
    number = random.randint(0,1)
    if number == 1:
        response = s3.get_object(
            Bucket='bucket-name',
            Key='image.png',
        )
        image = response['Body'].read()
        return {
            'headers': { "Content-Type": "image/png" },
            'statusCode': 200,
            'body': base64.b64encode(image).decode('utf-8'),
            'isBase64Encoded': True
        }
    else:
        return {
            'headers': { "Content-type": "text/html" },
            'statusCode': 200,
            'body': "<h1>This is text</h1>",
        }
Run Code Online (Sandbox Code Playgroud)

当我到达终点时,会返回一个白色小盒子的图像。我知道image.png我的存储桶中存在该图像,当我使用 Web GUI 在浏览器中打开它时,图像会正确加载。我到底做错了什么?如果重要的话,我将图像上传到 S3(从另一个 Lambda)的方式如下:

...

# Prepare image for S3
buffer = io.BytesIO()
my_image.save(buffer, …
Run Code Online (Sandbox Code Playgroud)

python amazon-s3 amazon-web-services aws-lambda

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

如果两个组件在 React 中导入相同的 CSS 文件会发生什么?

假设我有两个 React 组件:

import { React } from "react";
import "./styles.css";

function ComponentA() {
  ...
}
export default ComponentA;
Run Code Online (Sandbox Code Playgroud)
import { React } from "react";
import "./styles.css";

function ComponentB() {
  ...
}
export default ComponentB;
Run Code Online (Sandbox Code Playgroud)

这两个组件都导入相同的 CSS 文件styles.css。现在假设在我的应用程序中,我导入了这两个组件,因此App.js看起来像这样:

import { ComponentA } from "./ComponentA";
import { ComponentB } from "./ComponentB";

function App() {
  return (
    <div className="App">
      <ComponentA />
      <ComponentB />
    </div>
  );
}

export default App;
Run Code Online (Sandbox Code Playgroud)

这里到底发生了什么?我的应用程序是否导入同一个 CSS 文件两次?如果是这样,我是否只在文件上进行导入App.js

reactjs

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

如何使用perform_create在Django Rest Framework中自动设置字段?

我正在尝试为我的应用程序创建一个REST Api。

应用程序目录中的urls.py如下所示:

urlpatterns = [
    url(
        r'^professors/(?P<pk>[0-9]+)/reviews/$',
        views.ProfessorReviewList.as_view(),
        name = 'user-review-list',
    )
]
Run Code Online (Sandbox Code Playgroud)

serializers.py

class ProfessorSerializer(serializers.HyperlinkedModelSerializer):
    reviews = serializers.HyperlinkedIdentityField(view_name='professor-review-list')
    class Meta:
        model = Professor
        fields = (
            'url', 'name', 'name_code', 'university',
            'department', 'total_rating_points',
            'number_of_reviews', 'rating', 'reviews',
        )

class ReviewSerializer(serializers.HyperlinkedModelSerializer):
    author = serializers.ReadOnlyField(source='author.username')

    class Meta:
        model = Review
        fields = (
            'url', 'author', 'professor',
            'created', 'updated', 'rating', 'text'
        )
Run Code Online (Sandbox Code Playgroud)

最后,我的views.py看起来像这样:

class ProfessorReviewList(generics.ListCreateAPIView):
    queryset = Review.objects.all()
    serializer_class = ReviewSerializer
    def get_queryset(self):
        queryset = super(ProfessorReviewList, self).get_queryset()
        return queryset.filter(professor__pk=self.kwargs.get('pk')) …
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

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

服务器不支持SMTP AUTH扩展 - 通过Django中的私有主机发送电子邮件

我使用namecheap.com注册了域名和私人电子邮件.我正在尝试通过此私人电子邮件发送电子邮件.但是,我在标题中收到错误.

在我的settings.py中,我有以下设置:

EMAIL_HOST = 'mail.privateemail.com'
EMAIL_HOST_USER = 'contact@mysite.com'
EMAIL_HOST_PASSWORD = 'my password'
EMAIL_PORT = 587
EMAIL_USE_TLS = False
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
Run Code Online (Sandbox Code Playgroud)

我试图通过一个视图发送我的邮件:

send_mail(
    'Subject here',
    'Here is the message.',
    'contact@mysite.com',
    ['myname@gmail.com'],
    fail_silently=False,
)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

SMTP AUTH extension not supported by server.
Run Code Online (Sandbox Code Playgroud)

不知道怎么解决这个问题?谢谢!

python django django-email

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

当相关对象被删除时,如何维护外键?

假设我有来自两个不同表的两个对象,分别称为Student、 和School。该Student表存储了该表的外键School,因此是多对一的关系。例如:

Student Obj (pk = 251)
- school_pk = 24 (Attribute can be null)

School Obj (pk = 24)
Run Code Online (Sandbox Code Playgroud)

School现在,如果我删除主键为 24 的对象会发生什么?主键为 251 的对象Student在删除过程中是否也被更新,使其属性school_pk被设置为null

database foreign-keys relational-database

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