Перенаправление запрашивает, только если файл не найден?

Метод .update() используется для обновления нескольких объектов. Как вы узнали, он обновит все объекты в наборе запросов.

Если я вас правильно понимаю, вы хотите обновить один экземпляр, но из вашего кода мне не ясно, какой это экземпляр.

Вы можете отфильтровать набор запросов, как предлагает @ozcanyarimdunya:

geometry.objects.filter(pk=geo_pk).update(...)

Следует отметить, что .update() не вызывает .save() в вашей модели и не генерирует какие-либо сигналы. Чтобы обновить отдельный объект, обычно предпочтительнее присвоить экземпляру новые значения и вызвать save, например, так:

geo = geometry.objects.get(pk=geo_pk)
geo.lat = lat
geo.lon = lon
geo.save()

В дополнение к этому общее соглашение заключается в том, чтобы использовать имена классов с большой буквы ([115 ] вместо geometry).

15
задан Hash 12 November 2017 в 23:19
поделиться

5 ответов

У меня, казалось, была по крайней мере одна проблема с каждым из примеров выше. %{DOCUMENT_ROOT}, казалось, сделал неправильную вещь в определенных местах и приблизительно /, символы, кажется, отсутствуют. Вот мое решение, которое входит .htaccess в веб-корне.

Вместо того, чтобы использовать два правила (один для случая, где файл при клиентах / найден, и один для не найденным), все, что я должен проверить, - то, если требуемый файл (или каталог) НЕ существует. Поскольку, если это существует, никакое изменение не необходимо, это может просто использовать файл, обеспеченный в клиентском dir. Вот код, на котором я обосновался:

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/clients/$1/$2 !-f
RewriteCond %{DOCUMENT_ROOT}/clients/$1/$2 !-d
RewriteRule ^clients/([^/]+)/(.*)$ $2 [L]

спасибо за Вашу справку!

5
ответ дан 1 December 2019 в 00:45
поделиться

Попробуйте это:

RewriteEngine on
RewriteRule ^clients/abc/ - [L]
RewriteCond %{DOCUMENT_ROOT}clients/abc/$0 -f
RewriteRule .* clients/abc/$0 [L]
0
ответ дан 1 December 2019 в 00:45
поделиться
RewriteCond %{REQUEST_FILENAME} !-f
3
ответ дан 1 December 2019 в 00:45
поделиться

Я думаю, что Вы хотите что-то вдоль этих строк:

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}clients/$1/$2 -f
RewriteRule ^clients/([^/]+)/(.*)$ %{DOCUMENT_ROOT}clients/$1/$2 [L]
RewriteRule ^clients/([^/]+)/(.*)$ %{DOCUMENT_ROOT}$2 [L]
0
ответ дан 1 December 2019 в 00:45
поделиться
# If requested resource exists as a file or directory, skip next two rules
RewriteCond %{DOCUMENT_ROOT}/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule (.*) - [S=2]
#
# Requested resource does not exist, do rewrite if it exists in /archive
RewriteCond %{DOCUMENT_ROOT}/archive/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/archive/$1 -d
RewriteRule (.*) /archive/$1 [L]
#
# Else rewrite requests for non-existent resources to /index.php
RewriteRule (.*) /index.php?q=$1 [L] 

От Перезапись, если файлы не существуют

25
ответ дан 1 December 2019 в 00:45
поделиться
Другие вопросы по тегам:

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