小编sam*_*eri的帖子

django rest framework:限制可以更新的字段

我希望用户只能更新一个特定字段.例如:

models.py

class Snippet(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=100, blank=True, default='')
    code = models.TextField()
    linenos = models.BooleanField(default=False)
    language = models.CharField(choices=LANGUAGE_CHOICES, default='python', max_length=100)
    style = models.CharField(choices=STYLE_CHOICES, default='friendly', max_length=100)

    class Meta:
        ordering = ('created',)
Run Code Online (Sandbox Code Playgroud)

serializer.py

class SnippetSerializer(serializers.ModelSerializer):
    class Meta:
        model = Snippet
        fields = ('id', 'title', 'code', 'linenos', 'language', 'style')
Run Code Online (Sandbox Code Playgroud)

views.py

class SnippetList(generics.ListCreateAPIView):
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer


class SnippetDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer
Run Code Online (Sandbox Code Playgroud)

一旦Snippet创建,用户应该只能更新title字段.

我知道我可以通过以下方式实现这一目标:

serializers.py

def update(self, instance, validated_data):
        """
        Update and …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

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

为什么逐行读取文件会占用更多内存?

我试图读取这种格式的大文件:

a string key, 200 values separated by comma
Run Code Online (Sandbox Code Playgroud)

并将其写入地图。

我写了这段代码:

package main

import (
    "bufio"
    "unsafe"
    "fmt"
    "log"
    "os"
    "runtime"
    "strings"
)

func main() {

    file, err := os.Open("file_address.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    mp := make(map[string]float32)
    var total_size int64 = 0
    scanner := bufio.NewScanner(file)
    var counter int64 = 0

    for scanner.Scan() {
        counter++
        sliced := strings.Split(scanner.Text(), ",")
        mp[sliced[0]] = 2.2
    }

    if err := scanner.Err(); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("loaded: %d. Took …
Run Code Online (Sandbox Code Playgroud)

memory-management go

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

为什么golang中的响应体是readCloser?

我想知道 golang 中的 http 包是如何工作的。我可以看到http响应的正文是这样的:

type Response struct {
    StatusCode int
    Header     Header
    Body       io.ReadCloser
}
Run Code Online (Sandbox Code Playgroud)

这Body是一个 ReadCloser。这是为什么?

主要问题是: http 包是否同时完整地读取 header 和 body 然后返回,Response或者它只读取Header部分,当我们读取时,Body我们实际上是从连接读取?我们是否有可能在完成整个正文之前遇到错误(例如因为连接断开)?或者当我们收到响应时,正文已完全接收并驻留在内存中?

http go

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