Как я обновляю участников объекта, использующих dict?

\-\.\/\[\]\\ **always** need escaping
\*\+\?\)\{\}\| need escaping when **not** in a character class- [a-z*+{}()?]

Но если вы не уверены, это не вредно, если вы включаете escape перед символом, не состоящим из слов, который вы пытаетесь найти.

Цифра или буква - это символ слова, экранирование цифры относится к предыдущему совпадению, экранирование буквы может соответствовать непечатаемому символу, например, новая строка (\ n), символ табуляции (\ t) или граница слова (\ b) или набор символов, как любой символ слова (\ w), любой несловесный символ (\ W).

Не избегайте буквы или цифры, если только вы не имеете это в виду.

11
задан Nick Presta 2 June 2009 в 15:07
поделиться

4 ответа

Вы можете использовать функцию setattr для динамической установки атрибутов:

for key,value in request.GET.items():
    setattr(foo, key, value)
19
ответ дан 3 December 2019 в 04:33
поделиться

Если request.GET является словарем и класс Foo не использует __ слоты __ , то это также должно работать:

# foo is a Foo instance
foo.__dict__.update(request.GET)
3
ответ дан 3 December 2019 в 04:33
поделиться

Вы почти поняли.

foo = Foo(**request.GET)

должно помочь.

1
ответ дан 3 December 2019 в 04:33
поделиться

Если вы используете это для создания объекта модели, который затем сохраняется, я настоятельно рекомендую использовать ModelForm . Это будет делать то, что вы описали, каноническим способом для Django, с добавлением проверки.

Чтобы расширить - я не имел в виду использовать его для вывода формы, просто ввод формы. Как показано ниже:

class Foo(models.Model):
      a = models.CharField(max_length=255),
      b = models.PositiveIntegerField()

class FooForm(forms.ModelForm):
      class Meta:
          model = Foo

def insert_foo(request):
      form = FooForm(request.GET)
      if not form.is_valid():
          # Handle error conditions here
          pass
      else:
          form.save()

      return HttpResponse('Your response')

Затем, предполагая, что он привязан к / import /, GET для / import /? A = Test & b = 1 вставит новый Foo с a = "Test" и b = "1".

1
ответ дан 3 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: