社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Iain Shelvington

Iain Shelvington 最近创建的主题
Iain Shelvington 最近回复了
3 年前
回复了 Iain Shelvington 创建的主题 » Python3将用户输入字符串解释为原始字节(例如。\x41==“A”)

将用户输入字符串解释为原始字节。您可以对字符串进行编码,然后使用 "unicode_escape" encoding 然后再次对字符串进行编码,得到字节对象

user_input_abc = '\\x41\\x42\\x43'
print(user_input_abc) # \x41\x42\x43
user_input_escaped = user_input_abc.encode().decode('unicode_escape')
print(user_input_escaped) # 'ABC'
user_input_bytes = user_input_escaped.encode()
print(user_input_bytes) # b'ABC'
3 年前
回复了 Iain Shelvington 创建的主题 » 想要在javascript中将json数组作为django变量传递吗

你应该使用 json_script 模板过滤器,将变量以可加载到JS中的格式添加到模板中

{{ variable|json_script:"foo" }}

<script>
    const foo = JSON.parse(document.getElementById('foo').textContent);
</script>
3 年前
回复了 Iain Shelvington 创建的主题 » Django post_迁移信号被多次调用

这个 post_migrate 每迁移一个应用都会发送一次信号,即使没有任何更改。通过考试 sender 参数连接信号时,仅在应用程序迁移后运行功能一次

def full_sync_if_model_change(plan, **kwargs):
    ...


class LakeSyncConfig(AppConfig):
    name = "lake_sync"

    def ready(self):
        post_migrate.connect(full_sync_if_model_change, sender=self)
3 年前
回复了 Iain Shelvington 创建的主题 » Django-在queryset结果中订购多个ManyToManyField

你可以用 prefetch_related 通过在单个查询中获取所有相关对象来优化DB查询,如果添加 Prefetch 对象,您可以更改用于预取的查询集,包括排序

qs = Collection.objects.prefetch_related(
    Prefetch('products', queryset=Product.objects.order_by('launch_date'))
)

如果总是需要这种排序,也可以只向模型中添加默认排序

class Product(models.Model):

    ...

    class Meta:
        ordering = ['launch_date']
3 年前
回复了 Iain Shelvington 创建的主题 » 根据django字段的值,在css中添加样式

你应该和 inven.quantityInventory 不只是 inven 。将模型实例与int进行比较,与int属性进行比较是没有意义的

<td class="{% if inven.quantityInventory < 10 %}color-green-primary{% else %}color-red-primary{% endif %}">{{ inven.quantityInventory }}</span></td>
3 年前
回复了 Iain Shelvington 创建的主题 » 不用数据库Django制作复杂模型

将标签添加到 Django enumeration types ,将元组传递给每个成员,其中第一个元素是值,第二个元素是自定义标签

class CallType(m.IntegerChoices):
    PULL = 1, "pulling"
    PUSH = 2, "pushing"
5 年前
回复了 Iain Shelvington 创建的主题 » 在python上查找同一字典中键和值之间的差异

可以使用集合计算两个集合之间的差异

keys = set(d1)
values = set(item for sublist in d1.values() for item in sublist)
print(keys - values)  # {'C', 'B'}
5 年前
回复了 Iain Shelvington 创建的主题 » Python-DRF返回行数,但不返回数据或结构

你需要使用 ModelSerializer

class SizeSerializer(serializers.ModelSerializer):
    ...
5 年前
回复了 Iain Shelvington 创建的主题 » 在Python中指定函数参数类型

这个 typing module List

from typing import List

def f(param: List[str]):
    pass
5 年前
回复了 Iain Shelvington 创建的主题 » 如何使用多个分隔符拆分字符串(Python)

re.split 可以在每个匹配的正则表达式上拆分字符串

>>> re.split('[/\.]', 'https://expressjs.com/en/starter/hello-world.html')
['https:', '', 'expressjs', 'com', 'en', 'starter', 'hello-world', 'html']

[/\.] 匹配任何正斜杠或句点字符

5 年前
回复了 Iain Shelvington 创建的主题 » Django HTML模板表呈现

django模板中有一些可用的变量 for loop ,其中一个被命名为 forloop.counter 它给出了循环的当前迭代。可以使用此变量在第二个循环中呈现不同的内容

<table>
  {% for rowval in results %}    
    <tr>
      {% for val in rowval %}
        {% if forloop.counter == 2 %}
          <th>{{ val }}</th>
        {% else %}
          <td>{{ val }}</td>
        {% endif %}
     {% endfor %}
    </tr>
  {% endfor %}
</table> 
6 年前
回复了 Iain Shelvington 创建的主题 » Nginx子目录上的Django重定向到根目录

你还需要重写 LOGIN_URL , STATIC_URL , LOGIN_REDIRECT_URL

6 年前
回复了 Iain Shelvington 创建的主题 » 在django中尝试上载带有ImageField的图像时出现类型错误

你的 upload_location 函数有错误。您试图格式化字符串,但未包含“替换”标记

def upload_location(instance, filename):
    return "static/img/" % (instance.id, filename)

应该是

def upload_location(instance, filename):
    return "static/img/%s/%s/" % (instance.id, filename)
6 年前
回复了 Iain Shelvington 创建的主题 » 在Python中调整图像大小

缩略图功能保留纵横比。您应该使用resize函数

image.resize(size, Image.ANTIALIAS)
5 年前
回复了 Iain Shelvington 创建的主题 » Python中lambda表达式与局部函数的速度测试

使用 min 是一个糟糕的性能度量,因为任何程序的执行速度都会受到计算机上运行的其他进程的影响。一个重要样本的平均值信息量要大得多

为什么羔羊跑得慢

foo = lambda a, b: (a + 97, b)
min(timeit.repeat(lambda:dict(map(foo, x, y))))
5 年前
回复了 Iain Shelvington 创建的主题 » 用Intcomma格式化Django中的数字

widthratio 接受论据 as <variable> ,它将计算结果存储在变量中,然后可以在模板中使用该变量

{% widthratio item.a 1 item.b as foo %}
<h2>{{ foo|intcomma }}</h2>
5 年前
回复了 Iain Shelvington 创建的主题 » 基于Django中的自定义用户类型限制对视图的访问

你可以使用 UserPassesTestMixin 混合蛋白

class YourView(UserPassesTestMixin, View):

    def test_func(self):
        return self.request.user.user_type == 'type1'
5 年前
回复了 Iain Shelvington 创建的主题 » Python不在for循环中打印文件内容

os.listdir 只返回文件名,不返回这些文件的完整路径,在打开之前需要连接目录名和文件名

import os

BASE_DIR = 'files/'
dir = os.listdir(BASE_DIR)

for file in dir:
    print(file)

    with open(os.path.join(BASE_DIR, file), 'r') as f:
        x = f.readlines()
        print(x)
5 年前
回复了 Iain Shelvington 创建的主题 » _(str)在Python中,意思是两者[副本]
6 年前
回复了 Iain Shelvington 创建的主题 » Django:检查记录是否存在于两个不同的状态

你可以用 Q 对象以创建复杂查询,包括在一个或另一个条件上进行匹配

query = Participant.objects.filter(Q(sender=A, receiver=B) | Q(sender=B, receiver=A))
query.count() == 2  # If you want to check that 2 records exist

| 在这种情况下,创建一个带有“或”的过滤器

6 年前
回复了 Iain Shelvington 创建的主题 » django如何找到不在字段中的最小值?

这可以通过使用子查询来完成

all_codes = Material.objects.values('Code')

Material.objects.annotate(
    next=F('Code') + 1
).exclude(
    next__in=all_codes
).aggregate(
    minimum_code=Min('next')
)['minimum_code']

我们发现所有行,其中代码后的下一个数不在所有的代码值中,并且该注释的最小值是表中不存在的最低值。

希望这张表能说明发生了什么

|------|------|--------------------|
| Code | next | next in all Codes? |
|------|------|--------------------|
|   1  |   2  |        True        |
|------|------|--------------------|
|   2  |   3  |        False       |  <- The minimum next not in all codes
|------|------|--------------------|
|   4  |   5  |        True        |
|------|------|--------------------|
|   5  |   6  |        True        |
|------|------|--------------------|
|   6  |   7  |        False       |
|------|------|--------------------|

记住,如果您使用的是MySQL 可怕的 在处理子查询时。在这种情况下,首先计算子查询,然后将结果作为列表传递(如果结果不太大)有时会更快 next__in=list(Material.objects.values_list('Code', flat=True))

这将只给出正确的结果,如果最小值不低于所有现有值,则应首先检查此情况。

minimum_code = Material.objects.aggregate(minimum_code=Min('Code'))['minimum_code']
if minimum_code > 1:  # Or whatever default value you want
    return 1
else:
    # Do the above
5 年前
回复了 Iain Shelvington 创建的主题 » 如何在django中使用model form编辑对象?

每个视图都应该接受GET和POST方法,当方法为GET时,表单将被实例化,没有 request.POST 传递给它的数据和表单刚刚呈现。

def newpost(request):
    if request.method == 'GET':
        form = PostForm()
    else:  # POST
        form = PostForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('newpost')
    return render(request, 'console/newpost.html', {'form':form})

def editpost(request, pk):
    obj = Post.objects.get(id=pk)
    if request.method == 'GET':
        form = PostForm(instance=obj)
    else:  # POST
        form = PostForm(request.POST, instance=obj)
        if form.is_valid():
            form.save()
            return redirect('editpost')
    return render(request, 'console/editpost.html', {'form':form})

<form method="POST">

如果不在表单上设置“action”属性,则表单会将数据提交到浏览器当前所在的URL。这样,可以对两个视图使用相同的模板

5 年前
回复了 Iain Shelvington 创建的主题 » django中的单选按钮

您的模型很好,可以删除自定义字段 division_check 只需更改窗体中的小部件和标签 Meta

class Meta:
    model = ProValue
    fields = [
        'school_name',
        'level_of_grades',
        'num_of_days',
        'division_check',
    ]
    widgets = {
        'division_check': forms.RadioSelect,
    }
    labels = {
        'division_check': 'Do you have multiple divisions for your grades?',
    }
5 年前
回复了 Iain Shelvington 创建的主题 » 用Python扩展JSON文件

这更接近你想要的吗?用新的键和值更新的字典

import json

with open('data.json') as json_data_file:
    data = json.load(json_data_file)
data['blabla3'] = 'dubdub3'
print(data)  # {'blabla1': 'dubdub1', 'blabla2': 'dubdub2', 'blabla3': 'dubdub3'}

编辑:

要同时更新多个条目,可以使用 update

data.update({
    'blabla3': 'dubdub3',
    'blabla4': 'dubdub4',
})
5 年前
回复了 Iain Shelvington 创建的主题 » Django模板添加javascript和jquery

你需要使用 staticfiles 应用程序模板标记

{% load static %}
<script src="{% static "js/script.js" %}" ></script>
5 年前
回复了 Iain Shelvington 创建的主题 » 通过Django模板文件反向查询

没有 object_list 在你的 DetailView 的上下文,只有对象。你需要移除for循环 对象列表 在模板中

 {% for contact in company.contact_set.all %}
     {{ contact.first_name }}
 {% empty %}
    <!-- no entries -->
 {% endfor %}
5 年前
回复了 Iain Shelvington 创建的主题 » Django form init override'Select a valid choice'表单验证错误

当请求方法为POST时,您不能传递 company 当你初始化表单时

form = UserRegisterForm(request.POST)

这导致您为 role 字段到 EmployeeType 公司为空的地方

# self.company will be None
self.fields['role'].queryset = EmployeeType.objects.filter(company=self.company)

你需要通过公司

form = UserRegisterForm(request.POST, company=request.tenant)    
5 年前
回复了 Iain Shelvington 创建的主题 » 如何在python中使用单词代替数值和运算符进行加法

我们可以在python中将字符串转换为等价的数字和运算符,然后对该表达式求值以得到答案。例如,我们将“2+3”转换为“2+3”,然后使用 eval

words_to_symbols = {
    'one': '1',
    'two': '2',
    'three': '3',
    'four': '4',
    'five': '5',
    'six': '6',
    'seven': '7',
    'eight': '8',
    'nine': '9',
    'plus': '+',
    'minus': '-',
    'times': '*',
    'divide': '/'
}

def parse_and_eval(string):
    # Turn words into the equivalent formula
    operation = ''.join(words_to_symbols[word] for word in string.split())
    return eval(operation)

parse_and_eval('two plus three')  # returns 5
5 年前
回复了 Iain Shelvington 创建的主题 » Django循环保存所有现有记录,但只保存一条记录

您可以有许多同名的输入,这可以重复

<input type="file" name="myfile">

在您的视图中,可以使用 getlist

files = request.FILES.getlist('myfile')

然后循环查看视图中的文件

V_insert_data = StudentsEnrollmentRecord(
    Student_Users=studentname,
    Payment_Type=payment,
    Education_Levels=educationlevel,
    School_Year=schoolyear
)
for file in request.FILES.getlist('myfile'):
    StudentsSubmittedDocument.objects.create(
        Students_Enrollment_Records=V_insert_data,
        Document=file
    )
5 年前
回复了 Iain Shelvington 创建的主题 » 如何计算特定目录中的文件数,而不扫描python中的子文件夹

如果您使用的是python>=3.4版本,则可以使用 pathlib

base_path = pathlib.Path(file_path)
num_spreadsheets = len(list(base_path.glob('*.xlsx')))
5 年前
回复了 Iain Shelvington 创建的主题 » python方法1变量嵌套字典

此函数将递归查找传递给它的字典中的键。 d 并返回上次成功的查找

def get_nested(d, key):
    result = d.get(key)
    if isinstance(result, dict):
        return result or get_nested(result, key)
    return result

可以这样称呼

get_nested(dct, 'hits')
get_nested(dct, 'aggregations')
6 年前
回复了 Iain Shelvington 创建的主题 » 如何使用django将列表数据存储到数据库中?

一个简单的解决方案是迭代标记并为每个标记创建一个对象

tags = tag_name.split()
for tag in tags:
    Tag.objects.create(tag_name=tag)

formsets 可以提供一个很好的解决方案来编辑/创建同一模型的多个

6 年前
回复了 Iain Shelvington 创建的主题 » 在django模型中,如何用“timestamp”作为主键覆盖“id”作为主键?

将字段设置为主键的方法是

field_name = models.FieldType(primary_key=True)