class MenuItem(models.Model):
menu = models.ForeignKey(
Menu,
verbose_name = _('menu'),
on_delete=models.CASCADE,
)
{% load cloudinary %}
{% cloudinary photo.image.public_id className="my-class" height=200 width=100 %}
<img src="{{ photo.image.url }}">
from django.core.exceptions import NON_FIELD_ERRORS
from django.forms import ModelForm
class ArticleForm(ModelForm):
class Meta:
error_messages = {
NON_FIELD_ERRORS: {
'unique_together': "%(model_name)s's %(field_labels)s are not unique.",
}
}
Очень долго грузится страница, а когда, через ForeginKey выбираю из этого списка записи в select box'е, то страница вообще зависает.
Но даже правильный выбор варианта пагинации не решит всю проблему. Есть select box (html тег) в котором находится ~20k записей, и именно при работе с ним страница перестает отвечать. Это можно как-то оптимизировать?
This seems to be fixable.
In short open /usr/lib/python3.5/weakref.py and change line 109 to:
def remove(wr, selfref=ref(self), _atomic_removal=_remove_dead_weakref):
And line 117 to:
_atomic_removal(d, wr.key)
Note you need to do this with spaces, not tabs as this will cause other errors.
# models.py
class Photo(models.Model):
offer = models.ForeignKey(Offer, on_delete=models.CASCADE)
photo = models.ImageField(upload_to=get_image_filename, verbose_name='photo')
Очень часть вижу на вакансиях требования React'a... Зачем он нужен Django разработчику?
Имя хоста написано кириллицей и Python 3.4 или старее?
Windows: socket.gethostbyaddr(name) fails for non-ASCII hostname
bugs.python.org/issue26227
- Обновить Python
- Переименовать хост
- Либо запускать Django передав ему ip адрес вместо имени хоста
python manage.py runserver 127.0.0.1:8000
UPD:
я попробовал воспроизвести подобную ошибку в среде Win 10 (в VirtualBox) и у меня получилось только в случае
если в файле hosts присутствует алиас с кириллицей и локаль Windows русская.spoiler
Если удалить русский, оставив только английский (на русском только интерфейс системы), то всё ок.
Так-же не удалось воспроизвести ошибку если при запуске указывать ip хоста как 127.0.0.2python manage.py runserver 127.0.0.2:8080
При условии, что в hosts нет алиаса с кириллицей для него.
На чистой системе (установлены только Python 3.7.2 и Pycharm Community, русская локаль) подобной ошибки нет.
Заглянул в исходники socket.py и socketmodule.c
Скорее всего данная особенность связаны с этой частью исходного кода Python на C, а именно PyUnicode_DecodeFSDefault#ifdef MS_WINDOWS /* Issue #26227: gethostbyaddr() returns a string encoded * to the ANSI code page */ return PyUnicode_DecodeFSDefault(name); #else /* Decode from UTF-8 */ return PyUnicode_FromString(name); #endif
Далее, если имя хоста не написано кириллицей и в hosts нет кириллицы следует вывод, что с высокой долей вероятности дело в стороннем софте(антивирус, кривой кряк и т.д.).
<!-- Sign In Form -->
<form>
<button type='submit' name='submit' value='sign_in'></button>
</form>
<!-- Sign Up Form -->
<form>
<button type='submit' name='submit' value='sign_up'></button>
</form>
#views.py
def index(request):
if request.method == "POST":
if request.POST.get('submit') == 'sign_in':
# your sign in logic goes here
elif request.POST.get('submit') == 'sign_up':
# your sign up logic goes here
Причем ошибка появляется что символов больше 50 а именно 51
max_length=50
CharField.max_length
The maximum length (in characters) of the field. The max_length is enforced at the database level and in Django’s validation using MaxLengthValidator.
models.CharField(max_length=50, db_index=True)
И можно решить эту проблему не убирая max_length или не делая max_length=None
Насчёт базы данных надо или нет но использую sqllite
class MyCustomForm(forms.ModelForm):
var1 = forms.CharField(
widget=forms.TextInput(attrs={
# override/add custom HTML attributes in this dictionary
'maxlength': '70',
})
)
То есть, что бы можно было, в любое место описания, вставить картинку, ссылку, список, и т. д. Как можно реализовать эту задачу?
version: "3.5"
services:
db:
build:
context: ./db
dockerfile: postgresql.Dockerfile
env_file:
- .env
restart: always
volumes:
- postgres:/var/lib/postgresql/data
ports:
- "127.0.0.1:5432:5432"
web:
build: .
restart: always
env_file:
- .env
- secret.env
command: gunicorn --bind 0.0.0.0:8080 --user nginx you_proj.wsgi
volumes:
- django-static:/data
ports:
- "127.0.0.1:8080:8080"
volumes:
django-static:
postgres:
FROM python:3.6-alpine
RUN apk add build-base python-dev py-pip jpeg-dev zlib-dev
ENV LIBRARY_PATH=/lib:/usr/lib
WORKDIR /code
ADD requirements.txt /code/
RUN apk update
RUN apk upgrade
RUN apk --no-cache add \
python3 \
python3-dev \
postgresql-client \
postgresql-dev \
build-base \
gettext
RUN pip3 install --upgrade pip
RUN pip3 install -r requirements.txt
RUN set -x ; \
addgroup -g 101 -S nginx ; \
adduser -u 101 -D -S -G nginx nginx && exit 0 ; exit 1
RUN mkdir -p /data/static/ && mkdir -p /data/media/
ADD . /code/
RUN /code/maxmind.sh
ENV PYTHONUNBUFFERED 1
docker exec -it container_name_1 python3 manage.py collectstatic --noinput
docker exec -it container_name_1 python3 manage.py migrate
>>> from django.db.models import Avg, Max, Min
>>> Book.objects.aggregate(Avg('price'), Max('price'), Min('price'))
{'price__avg': 34.35, 'price__max': Decimal('81.20'), 'price__min': Decimal('12.99')}
import os
import mimetypes
from django.http import StreamingHttpResponse
from django.core.servers.basehttp import FileWrapper
def download_file(request):
the_file = '/some/file/name.png'
filename = os.path.basename(the_file)
chunk_size = 8192
response = StreamingHttpResponse(FileWrapper(open(the_file, 'rb'), chunk_size),
content_type=mimetypes.guess_type(the_file)[0])
response['Content-Length'] = os.path.getsize(the_file)
response['Content-Disposition'] = "attachment; filename=%s" % filename
return response
from django.core.servers.basehttp import FileWrapper
from wsgiref.util import FileWrapper
>>> import geoip2.database
>>>
>>> # This creates a Reader object. You should use the same object
>>> # across multiple requests as creation of it is expensive.
>>> reader = geoip2.database.Reader('/path/to/GeoLite2-City.mmdb')
>>>
>>> # Replace "city" with the method corresponding to the database
>>> # that you are using, e.g., "country".
>>> response = reader.city('128.101.101.101')
>>>
>>> response.country.iso_code
'US'
>>> response.country.name
'United States'
>>> response.country.names['zh-CN']
u'美国'
>>>
>>> response.subdivisions.most_specific.name
'Minnesota'
>>> response.subdivisions.most_specific.iso_code
'MN'
>>>
>>> response.city.name
'Minneapolis'
>>>
>>> response.postal.code
'55455'
>>>
>>> response.location.latitude
44.9733
>>> response.location.longitude
-93.2323
>>> reader.close()
>>> from django.contrib.gis.geoip2 import GeoIP2
>>> g = GeoIP2()
>>> g.country('google.com')
{'country_code': 'US', 'country_name': 'United States'}
>>> g.city('72.14.207.99')
{'city': 'Mountain View',
'country_code': 'US',
'country_name': 'United States',
'dma_code': 807,
'latitude': 37.419200897216797,
'longitude': -122.05740356445312,
'postal_code': '94043',
'region': 'CA'}
>>> g.lat_lon('salon.com')
(39.0437, -77.4875)
>>> g.lon_lat('uh.edu')
(-95.4342, 29.834)
>>> g.geos('24.124.1.80').wkt
'POINT (-97 38)'