Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
python 3 ModuleNotFoundError: No module named 'phonenumber_field'
line 53, in from phonenumber_field.modelfields import PhoneNumberField ModuleNotFoundError: No module named 'phonenumber_field' -
Sharing Cookies
My Django website is running on hello.com and react application on abc.hello.com and I want to share cookies between them. The nginx configuration given below isn't working for me.Can anyone help me for this. Configuration : Django-nginx config: server { listen 80; server_name abc.com; location /static/{ root /home/ubuntu/static/; } location / { proxy_cookie_domain ~^(.+)(Domain=abc.hello.com)(.+)$ "$1 Domain=.hello.com> proxy_pass http://xx.xx.xx.xxxx:8000; } } React nginx config: server { listen 80; server_name abc.hello.com; location / { proxy_cookie_domain ~^(.+)(Domain=abc.hello.com)(.+)$ "$1 Domain=.hello.com> proxy_pass http://xxx.xxx.xxx.xxx:3000; } } -
Matching < select > values based on Django-Model entries
I have one Django- Model that has a Name and Number of Units field. An example of the entries is: Name1: 12 Name2: 18 Name3: 25 I would like to add these 2 fields on a form where the user will use a < select > dropdown to select a name e.g. Name1 And then another dropdown for the user to select their unit from 1 to the total number of units e.g. 1 - 12 However, the way that my code is currently set up, it shows the unit name - and the user can select it, but for the unit number it shows all the NumberOfUnits fields in the model Please see my current code: template.html: <form> <select name="Complex"> {% for x in model %} <option value="{{ x }}">{{ x.ComplexName }}</option> {% endfor %} </select>> Complex <select> {% for x in model %} <option value="{{ x.NumberOfUnits }}">{{ x.NumberOfUnits }}</option> {% endfor %} </select> Views.py: def customerDetails(request): model = ComplexListClass.objects.all().order_by('ComplexName') content = {'model': model} return render(request, 'main/customerDetails.html', content) Models.py: class ComplexListClass(models.Model): ComplexName = models.CharField(choices=complex_list , max_length = 50 ,default='1' , unique=True) NumberOfUnits = models.IntegerField(max_length=2 , blank=False , default=1 ) def __str__(self): return (self.ComplexName) -
Download YouTube Video using Python
I'm using the Python library Pytube to download youtube videos. Here is the main issue: While I configure the project on the server and access it through my domain name, it saves video on the server while I want to save it to my computer. Do you have any idea how can I do that? Thanks -
Django Q object not chaining correctly
I'm querying a ManyToMany field (tags). The values come from a list: tag_q = Q() tag_list = ["work", "friends"] for tag in tag_list: tag_q &= Q(tags__tag=tag) Post.objects.filter(tag_q) When I have only one value, it works flawlessly, but when more objects are stacked it always return an empty queryset. I didn't used tags__tag__in=tag_list because it returned any post that contained any of the tags in the tag list (an OR filter), and I need an AND filter here. This is my models: class Tag(models.Model): tag = models.CharField(max_length=19, choices=TagChoices.choices()) class Post(models.Model): tags = models.ManyToManyField(Tag, related_name='posts', blank=True) This is the Q object that is being passed in the filter query: (AND: ('tags__tag', 'work'), ('tags__tag', 'friends') -
measure the height and width of the image in django and store the value in models
I have a model for image url in django. I want to calculate the image_height and iamge_width of image which is stored in s3 bucket.Below is my model.py from django.db import models from .project_model import Project class Image(models.Model): image = models.TextField(blank=False) image_width = models.IntegerField(default=0) image_height = models.IntegerField(default=0) project_id = models.ForeignKey(Project, on_delete=models.CASCADE) is_thumpnail = models.BooleanField(blank=False) upload_on = models.DateTimeField("created on", auto_now_add=True) updated_on = models.DateTimeField("updated on", auto_now=True) def __str__(self): return self.file_name After getting the value of height and width, I want to store the value in the model.py. I am looking for below type of response example { "id": "cJ9cm", "title": null, "description": null, "datetime": 1357856330, "type": "image/jpeg", "animated": false, "width": 2592, "height": 1944, "size": 544702, "views": 31829, "bandwidth": 17337319958, "link": "https://i.imgur.com/cJ9cm.jpg" } -
I've a issue with my favourite app in django
I am designing a blog site and there will be a favorites module on my blog site. However, the problem is that I developed a custom user model using JWT, but then when I try to access the favorites section with these users, I get the following error. When I delete the perform_create function, everything works fine, but I have to use it to make users' favorite posts appear unique to each of them, but I couldn't find an alternative code that I can write instead. Can you help? this error TypeError at /api/favourites/list-create Field 'id' expected a number but got <django.contrib.auth.models.AnonymousUser object at 0x000001E01402CA00>. this is my favorite/api/views.py code from favourite.api.seralizers import FavouriteListCreateSerializer from favourite.models import Favourite from rest_framework.generics import ListCreateAPIView from rest_framework.permissions import IsAuthenticated class FavouriteListCreateAPIView(ListCreateAPIView): queryset = Favourite.objects.all() serializer_class = FavouriteListCreateSerializer permissions_classes = [IsAuthenticated] def get_queryset(self): return Favourite.objects.filter(user=self.request.user) def perform_create(self, serializer): serializer.save(user=self.request.user) favoruites/api/serializers.py file from favourite.models import Favourite from rest_framework.serializers import ModelSerializer class FavouriteListCreateSerializer(ModelSerializer): class Meta: model = Favourite fields = "__all__" and finally this is my custom account model from django.db import models from django.utils import timezone from django.utils.translation import gettext_lazy as _ from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager from django.utils.text import slugify class CustomAccountManager(BaseUserManager): def … -
Python test succeed on Linux but fail on windows
I'm currently working on a project where my python tests are actually succeeding when they are running on a Linux environment, but they fail when they are running in a Windows environment. And what is really weird is that the tests are failing randomly on Windows(sometimes, 4 tests are failing, sometimes it's 6...). I have the feeling that maybe the setUp method doesn't execute the same way in Linux and in Windows. Does anyone know if there is a difference between python test run on windows or on linux. Thank you. -
Django Elastic APM Trace logs message missing
I have Django-elastic APM setup, that's sends traces and logs to elk stack. Its actually works, but not as I need. I get trace, I get metadata, even logs received (2nd pic) But, problem is, I don't get any messages in logs section and I didn't find how to customize fields. But! When I search directly in logs, I see following: Message exist Finally, when I search it discover section, I can see even more info. Fields, I actually need. QUESTION So, there is my questions. Is it possible to add at least message info to transaction logs (first pic), Is it possible to at least add custom fields to logs section (2nd pic) Also, is there a way to make logs at least clickable? (Also 2nd pic, I mean its just plain text I have to go to discover and use this info like ctrl+c ctrl+v) Finally, why logs are marked as Errors, if its just a logs, and used like logs? I tried to set different levels as debug, or info, as u see in 2nd screen, but it still comes like error and it goes in apm-7.14-error* index. Here's my logging settings: LOGGING = { 'version': 1, … -
Pillow is not installed after removing .temp-builds
The error ERRORS: app_1 | core.Page.image: (fields.E210) Cannot use ImageField because Pillow is not installed. It seems that Pillow is detected as not installed in my docker container if I delete the .temp-builds after installing requirements.txt. I say this because if I remove the 'apk del .tmp-deps' the error went away. However, I want to remove the .tmp-builds because I learn it's best practice to make the docker container as lean as possible. Dockerfile RUN python -m venv /py && \ /py/bin/pip install --upgrade pip && \ apk add --update --no-cache postgresql-client && \ apk add --update --no-cache --virtual .tmp-deps \ build-base postgresql-dev musl-dev linux-headers \ python3-dev zlib-dev jpeg-dev gcc musl-dev && \ /py/bin/pip install -r /requirements.txt && \ apk del .tmp-deps requirements.txt django>=3.2.3,<3.3 psycopg2>=2.8.6,<2.9 uWSGI>=2.0.19.1,<2.1 djangorestframework >=3.12.4, <3.20.0 Pillow >= 8.4.0, <8.5.0 Any pointer would be greatly appreaciated. -
Elastic Beanstalk Linux 2 Cron Job running but not executing
I have put my configuration files down to as simple of an example as I can think of, but I still can't get the cron to execute. This is a django project, and though it looks like the crons are trying to run, they are not actually executing. .ebextensions/cron-log.config "/etc/cron.d/test_cron": mode: "000644" owner: root group: root content: | */1 * * * * root . /opt/elasticbeanstalk/deployment/env && echo "TESTING" >> /var/log/test_log.log 2>&1 commands: rm_old_cron: command: "rm -fr /etc/cron.d/*.bak" ignoreErrors: true when downloading the logs from aws, test_log.log does not exist in the cron file returned in the logs, it shows: Oct 29 09:03:01 ip-172-31-8-91 CROND[10212]: (root) CMD (. /opt/elasticbeanstalk/deployment/env && echo "TESTING" >> /var/log/test_log.log 2>&1) I have tried many variations of this including having the command that is ran make changes in our database, but it never seems to actually execute. -
error during deploying django project to heruku
I am trying to deplow a django project to heroku but i am getting this error. ERROR: Command errored out with exit status 1: /app/.heroku/python/bin/python /app/.heroku/python/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmp5mrz1adn Check the logs for full command output. ! Push rejected, failed to compile Python app. ! Push failed This is the entire log ctivity Feed Build LogID 314cb820-4652-417b-9486-61d629e4a6a9 -----> Building on the Heroku-20 stack -----> Using buildpack: heroku/python -----> Python app detected -----> Using Python version specified in runtime.txt -----> Installing python-3.8.12 -----> Installing pip 20.2.4, setuptools 57.5.0 and wheel 0.37.0 -----> Installing SQLite3 -----> Installing requirements with pip Collecting alembic==1.6.5 Downloading alembic-1.6.5-py2.py3-none-any.whl (164 kB) Collecting asgiref==3.3.4 Downloading asgiref-3.3.4-py3-none-any.whl (22 kB) Collecting Babel==2.9.1 Downloading Babel-2.9.1-py2.py3-none-any.whl (8.8 MB) Collecting bcrypt==3.2.0 Downloading bcrypt-3.2.0-cp36-abi3-manylinux2010_x86_64.whl (63 kB) Collecting bidict==0.21.2 Downloading bidict-0.21.2-py2.py3-none-any.whl (37 kB) Collecting blinker==1.4 Downloading blinker-1.4.tar.gz (111 kB) Collecting Brotli==1.0.9 Downloading Brotli-1.0.9-cp38-cp38-manylinux1_x86_64.whl (357 kB) Collecting cffi==1.14.6 Downloading cffi-1.14.6-cp38-cp38-manylinux1_x86_64.whl (411 kB) Collecting cheroot==8.5.2 Downloading cheroot-8.5.2-py2.py3-none-any.whl (97 kB) Collecting click==7.1.2 Downloading click-7.1.2-py2.py3-none-any.whl (82 kB) Collecting cryptography==3.4.7 Downloading cryptography-3.4.7-cp36-abi3-manylinux2014_x86_64.whl (3.2 MB) Collecting Django==3.2.8 Downloading Django-3.2.8-py3-none-any.whl (7.9 MB) Collecting django-ckeditor==6.1.0 Downloading django_ckeditor-6.1.0-py2.py3-none-any.whl (2.4 MB) Collecting django-filter==2.4.0 Downloading django_filter-2.4.0-py3-none-any.whl (73 kB) Collecting django-js-asset==1.2.2 Downloading django_js_asset-1.2.2-py2.py3-none-any.whl (5.8 kB) Collecting django-multiselectfield==0.1.12 Downloading django_multiselectfield-0.1.12-py3-none-any.whl (15 kB) Collecting dnspython==1.16.0 Downloading dnspython-1.16.0-py2.py3-none-any.whl (188 kB) Collecting … -
ModuleNotFoundError: No module named '_tkinter' Heroku
I am trying to deploy a webapp using Heroku and it get deployed but it gives internal server error when I try to open it. The complete log as from heroku logs -t is as follows: 2021-10-29T09:03:55.451439+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/core/handlers/exception.py", line 152, in handle_uncaught_exception 2021-10-29T09:03:55.451439+00:00 app[web.1]: callback = resolver.resolve_error_handler(500) 2021-10-29T09:03:55.451442+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/urls/resolvers.py", line 611, in resolve_error_handler 2021-10-29T09:03:55.451442+00:00 app[web.1]: callback = getattr(self.urlconf_module, 'handler%s' % view_type, None) 2021-10-29T09:03:55.451442+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/utils/functional.py", line 48, in __get__ 2021-10-29T09:03:55.451443+00:00 app[web.1]: res = instance.__dict__[self.name] = self.func(instance) 2021-10-29T09:03:55.451443+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/urls/resolvers.py", line 591, in urlconf_module 2021-10-29T09:03:55.451443+00:00 app[web.1]: return import_module(self.urlconf_name) 2021-10-29T09:03:55.451444+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/importlib/__init__.py", line 127, in import_module 2021-10-29T09:03:55.451444+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level) 2021-10-29T09:03:55.451444+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1014, in _gcd_import 2021-10-29T09:03:55.451444+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 991, in _find_and_load 2021-10-29T09:03:55.451444+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked 2021-10-29T09:03:55.451444+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 671, in _load_unlocked 2021-10-29T09:03:55.451444+00:00 app[web.1]: File "<frozen importlib._bootstrap_external>", line 783, in exec_module 2021-10-29T09:03:55.451444+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed 2021-10-29T09:03:55.451445+00:00 app[web.1]: File "/app/server/urls.py", line 7, in <module> 2021-10-29T09:03:55.451445+00:00 app[web.1]: path('apis/',include('apis.urls',namespace='apis')), 2021-10-29T09:03:55.451445+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/site-packages/django/urls/conf.py", line 34, in include 2021-10-29T09:03:55.451445+00:00 app[web.1]: urlconf_module = import_module(urlconf_module) 2021-10-29T09:03:55.451445+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.8/importlib/__init__.py", line 127, in import_module 2021-10-29T09:03:55.451446+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)2021-10-29T09:03:55.451446+00:00 app[web.1]: … -
django outlook email configuration godday SMTPAuthenticationError
can someone tell me how can i do the outlook SMTP configuration in Django setting.py because i receive the error: SMTPAuthenticationError at /reset_password/ (535, b'5.7.3 Authentication unsuccessful [KL1PR0401CA0022.apcprd04.prod.outlook.com]') # SMTP Configuration (Godaddy) #https://blog.csdn.net/weixin_42236288/article/details/110079480 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_USE_TLS = True EMAIL_USE_SSL = False EMAIL_HOST = 'smtp-mail.outlook.com' EMAIL_PORT = 587 EMAIL_HOST_USER = 'my email' EMAIL_HOST_PASSWORD = 'my password' EMAIL_FROM = 'admin@askjtmk.com' DEFAULT_FROM_EMAIL = EMAIL_HOST_USER -
ValueError: I/O operation on closed file in Django
I need help in solving this. The "read" method on the doc object shows this error: ValueError: I/O operation on closed file. Please, how do it solve this def send_comment_mail_notification(request, space, target_email): message = request.POST.get('description', '') subject = request.POST.get('subject', '') from_mail = space.email to = target_email msg = EmailMessage(subject, message, from_mail, [to],) doc = request.FILES['document'] print(doc.read()) msg.attach(doc.name, doc.read(), doc.content_type) msg.content_subtype = "html" msg.send() class CommentViewSet(BaseViewSet): permission_classes = (BelongToSpace, ) serializer_class = serializers.CommentSerializer parser_classes = (MultiPartParser, FormParser, FileUploadParser) queryset = models.Comment.objects.all() def callback(self, **kwargs): return send_comment_mail_notification(self.request, self.space, "aa@gmail.com") -
Register SQL-table in Django admin
If I have a PostgresDB that contains both Django models and other SQL tables, is it possible to register these other SQL tables in the Django admin panel? More details about the setup: I have a docker-compose setup where Django is running in one container, a Postgres DB in another, and a slack-app in a third container. Django is connected to the DB and the models are registered in the admin panel. This works as intended. The slack-app is also connected to the same DB and has some tables there that are not Django-models. I would like to also access these through the Django admin panel in order to have everything in one place. Is this possible? -
Django Forms : Nested forms for customed input
I'm trying to display possible results from my database using forms. My models.py looks like that : CHOICE_DISPLAY = ( ('select','select'), ('char','char'), ('radio','radio'), ('int','int'), ('float','float'), ('date','date'), ) class Custom_information(models.Model): name = models.CharField(default="",max_length=200) reference = models.CharField(default="",max_length=200) type_display = models.CharField( choices = CHOICE_DISPLAY , blank=True, null=True,max_length=200 ) class Meta: ordering = ['name'] def __str__(self): return self.name class Radio_custom_choice(models.Model): name = models.CharField(default="",max_length=200) custom_choice = models.ForeignKey(Custom_choice,on_delete=models.CASCADE) class Meta: ordering = ['custom_choice__name'] def __str__(self): return self.name class Custom_choice_company(models.Model): result = models.CharField(default="", max_length=200) custom_choice = models.ForeignKey(custom_choice, blank=True, null=True, on_delete=models.CASCADE) compagny = models.ForeignKey(Company,on_delete=models.CASCADE) class Meta: ordering = ['custom_choice__name'] def __str__(self): return str(self.id) The 'Custom_choice' table as an display type. I want to create a form of 'Custom_choice_company' which will enable me to display every element and get the result of them. I want my html to look like that depending on what kind of displaying my custom_choice object is: <label>"My custom choice name"</label> {% if "my cutom choice type" == "char" %} <input type="my cutom choice type" > {% else if "my cutom choice type" == "radio" %} {% for element in "my radio_custom_choice linked to cutom_choice" %} <input type="radio"> {% endfor %} {% endif %} ``` How can I manage to do that ? Thanks in … -
Celery beat: Change to individual timezone tasks causing validation error "Invalid timezone"
celery --version 5.1.2 (sun-harmonics) django --version 3.2.8 I have a celery schedule that has four tasks that run in different timezones. I am using nowfun for setting the timezones and have set CELERY_ENABLE_UTC = False in settings.py. I followed the top response on this SO post: Celery beat - different time zone per task Note that I made this change this morning - I was running a previous version of the code without these settings. Currently, I am saving the celery results to CELERY_RESULT_BACKEND = 'django-db'. Since implementing the change that allows for different tasks to be run according to different timezones I am getting an error when I run celery -A backend beat -l info. It's super long though here is the head and tail: Head: [2021-10-29 07:29:36,059: INFO/MainProcess] beat: Starting... [2021-10-29 07:29:36,067: ERROR/MainProcess] Cannot add entry 'celery.backend_cleanup' to database schedule: ValidationError(["Invalid timezone '<LocalTimezone: UTC+00>'"]). Contents: {'task': 'celery.backend_cleanup', 'schedule': <crontab: 0 4 (m/h/d/dM/MY)>, 'options': {'expire_seconds': 43200}} Tail: django.core.exceptions.ValidationError: ["Invalid timezone '<LocalTimezone: UTC+00>'"] Celery beat hangs on this last error message and I have to kill it with ctrl + c. I went onto celery and read their instructions about manually resetting the database when timezone-related settings change - the … -
Setting a dropdowns values based on a different model selection
I currently have a model with 2 fields: Name & Number of Units When the first field is selected e.g. Name = Name1 I would like to display the Number Of Units saved in association with that model. e.g. Name1 has 50 units then the second < select > will show the number a list from 1 - 50 because Name1 has 50 units. When I do this with my code currently , it lists the max number of units for every model entry instead Please see the below code: template.html: <form> <select name="Complex"> {% for x in model %} <option value="{{ x }}">{{ x.ComplexName }}</option> {% endfor %} </select>> Complex <select> {% for x in model %} <option value="{{ x.NumberOfUnits }}">{{ x.NumberOfUnits }}</option> {% endfor %} </select> </form> Views.py: def customerDetails(request): model = ComplexListClass.objects.all().order_by('ComplexName') content = {'model': model} return render(request, 'main/customerDetails.html', content) Models.py: class ComplexListClass(models.Model): ComplexName = models.CharField(choices=complex_list , max_length = 50 ,default='1' , unique=True) NumberOfUnits = models.IntegerField(max_length=2 , blank=False , default=1 ) def __str__(self): return (self.ComplexName) -
Downloading files to client with django
I'm trying to download a file from Django to client. Currently, the request is made from axios, the file is fetched from Django and returned to the client. Inside the network tab, I can see a 200 OK response and the image is visible in the preview. However, the download is not being saved to the client desktop. I would appreciate any suggestions Download method: def download(request, pk): url = Model.objects.get(id=pk).__dict__["file1"] filename = url.rsplit("/", 1)[1] file_path = "temp/" + filename file_to_download = open(file_path, "rb") mime_type, _ = mimetypes.guess_type(file_path) response = HttpResponse(file_to_download, content_type=mime_type) response["Content-Disposition"] = "attachment; filename=%s" % filename return response Response headers HTTP/1.1 200 OK Date: Fri, 29 Oct 2021 08:01:15 GMT Server: WSGIServer/0.2 CPython/3.9.7 Content-Type: image/jpeg Content-Disposition: attachment; filename=default.jpg Vary: Origin Access-Control-Allow-Origin: http://localhost:3000 X-Frame-Options: SAMEORIGIN Content-Length: 10994 X-Content-Type-Options: nosniff Referrer-Policy: same-origin -
Filtering a date range field with date range
React/Django app. I want to add a date range filter (flatpickr) to already existing filters for orders. Orders has a period field (how long the order is valid), which is a DateRange field. Via the flatpickr I select a date range, and if at least one day of the order period is in that selected date range, it should show up as a result. ex. period: DateRange(datetime.date(2021, 2, 11), datetime.date(2021, 3, 14), '[)') I have the filter ready in FE to accept the results from BE. But I'm not sure how to achieve this in the BE. As I'm fairly new to this, my ideas are limited, but currently have this: ... from django_filters.rest_framework import DjangoFilterBackend, IsoDateTimeFilter, FilterSet from rest_framework import filters, mixins, status ... class OrderFilter(FilterSet): start_date = IsoDateTimeFilter(field_name="period", lookup_expr="gte") end_date = IsoDateTimeFilter(field_name="period", lookup_expr="lte") class Meta: model = Order fields = { "status": ["in"], "client": ["exact"], "created_by": ["exact"], } ordering_fields = ["period", "client__name", "destination__name"] ordering = ["period"] custom_field_target_model = Order I believe the closest thing I found, is IsoDateTimeFromToRangeFilter, but that doesn't seem to be what I'm looking for. -
Counting entries in a table using Javascript
I'm using django to list the number of cars sold in a particular dealership. (assuming there are only red and blue cars) I have designed the query in such a way that we could visualise cars at a monthly or weekly or yearly level. so the data in the table in going to be changing , so I have written the following javascript code to read the table that will be generated everytime . I have also used pagination to include only 10 in a page. The code just reads what is available on the first page and returns 10 every single time whereas I need it to consider all the pages . Can someone help <script> function counter(){ var j = 6; //j=6 is the column id for colour in my table , so I'm, directly using it var total = 0; var red= 0; var blue= 0; var table = document.getElementById("datatable"); for (var i = 1, row; row = table.rows[i]; i++) { var Row = document.getElementById("datatable").rows[i].cells[j].innerHTML; var blood_group = document.getElementById("datatable").rows[i].cells[j].innerHTML; //alert("running loop2"); //alert(document.getElementById("datatable").rows[i].cells[j].innerHTML); if (colour == "red") { red= red+ 1; } else if (colour== "blue") { blue= blue+ 1; } total = red+ blue; } document.getElementById("total_count").innerText = … -
Why some Django classes and default apps are called API?
I have recently started using Django and came across a few instances where in documentation some of the default django classes are referred to as APIs. One such instance is on this link where Model class is referred to as an API. This somehow doesn't make much sense to me. I have tried searching this on web but no help there. Is the Model class not a class and an API, or can it be both? I haven't studied Django Rest Framework at all, will it make more sense then? -
Tinymce generate so long src attribute in image tag when i upload any image
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAYEBAUEBAYFBQUGBgYHCQ4JCQgICRINDQoOFRIWFhUSFBQXGiEcFxgfGRQUHScdHyIjJSUlFhwpLCgkKyEkJST/2wBDAQYGBgkICREJCREkGBQYJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCT/wgARCAFNAfQDASIAAhEBAxEB/8QAGwAAAgMBAQEAAAAAAAAAAAAAAAMBAgQFBgf/xAAZAQADAQEBAAAAAAAAAAAAAAAAAQIDBAX/2gAMAwEAAhADEAAAAfqgAAAAAETAAAQAFPPdvw2WnyvFvwXMQDmAGAABADfV+a9DzdemjY5exUOsGZ13q9nV5u+Da3C+s9z8+nTNlomoV8l+v+WqcXSx68tHBM6KdRoVbRwVvDKlt66bz29fPr6+QA0zAAAAAAAAAAAAImAAAiJojD889jyufo+Z+f7fD2xgC5AgJgABuiaX3uX1Ofp6MFuXtrDZHVl2TTN2bYi23PvrPRoU3XFkxapFuA89n6fKy1ddTUxi2hTTk3BFptcW6nP9LvzuA6uUAAAAAAAAAAAAAAiYACgWxr4kVk15EY7fOOT9VW18rb7zAzwlulNzh06XZ6Z7vnPVG1Tpve3Pox30XnRNJdQT0sytFu3Yd95Papmmbb0vU2tWzWLz/s/GxV3zpjTGxtBGuHUl2u+p29dTe3hAKkAAAAAAAAAAAAAApPl5fZ5+ROd3Ves3KXQCI0VT5St7Jv58n0POjXnM1Wmsdd4Vz3aoQOS6L278fVisaOplZl0p2p696NumEsmdc5tQYzpL0786/C+08Xjtfr49WWspfNTR1GDnpc/r64utQ6OZ18zGnC5auAAAAAAAAAACgR5nXhx1ZK9k0itrBn05dwJq6rMd7kvk8P1/m8OnEbr5bZn6WhitphPPOnSGHZphzTNvQ1zdg9Vp2Zn64sio1bfk6m2NpidsEeO9X5Pl6utr43SjR80bcKtaR17XJ6uuNom+2ETMNBADLpaKQGAAAAAAHK6Pm5pCulky0o5N05uxdLFvxapbqa13OKH1mo4vcpF+fY23J1rm40pb6TVNCXBrF20iK2qiliw2OQ+ouRp0jXpS/p5SK1DF5b0PnuPsv1OR1c9NjkN3xbMXZHS5vR0ydYjfnKwJzaJaLVAcRLQAAAAACPJel8nlp0tPJ6KrPfXmCymUDOwVNdurJ0zx1dVPOwrL5q+pg5ulUNiLSME0y2Bl62aAlqJAJYoaf2M2vp5h+d+mdKzI+Dx+lzuHtr1OX1JvZek74vuhgrdbj9XXJ9ZpthN4qFytmpAC11saAAAAAoHK43Sy5acnZGTLXuP5PU0zSjoc4a1VtFd5iX7ZZqMWqqptJdVNvFc00pw6EjKy61vA4JACZCIvAqOT6DSL0svp5rNXAWfRQeYy9OvD3YOjLXV7ItU6Go0XEdHn67y2LlnRzrvaRExZoAAalwgBgAAh+JHIVVeWurm9jOPkdTDXO/R5Y1bZeT3ZZw29Ds5vR3xQq9U6UYpMi609WHY1Pj10J5+ilbVmoIhFxYDKr2Na+mq/ZyUoZB7s/N5GOvUVx4w6va24rdcescpjIy9PBnvp05tVQa8ezXDXaLdHIBLRMASRIQ1TRSAwAA5HW8/L58Lvjt0HZtdzz8HbwTSupxuiEcD0vnJrt9Xhdm4UvRha0KutNqmLRbXg1Mtzukua5a9SObpRWUxdqJrNa/TZNfZxxOfg0n5cNOPtnMtK000o1XTLbKNurN6RnV1LVphvdg1XN9ePXphumJ6OMkGgAAABqXCkBgAC/Nd7zkVkci+G27dzejpF8uqtLjaaqzvo8Hvchunc872pN+HYrSMjkE1rqXazMtYcU0JFPP6K89ONk283k669zF6XbGUK8/tizDGbl7B69s3NNcOEqZRU7p8TZR6W+a3RzaMTVS8e9Gud66c79MOjMz1cMEwAAAAEOS4JAaAA5XB6PJx1pal89H9TkdK511kuMePo4ZrTh2IT4/X873c9Ok3C/XKlGUTnRns08mzUReArNrDzcP0tItWXP5/O25Ipz9VLVuq0aOdCroZs2ce6eLFHef5ZyftKeZ62mXYZruTl3czoFvuudMO1MT2efIAoiwOpMBDkuFIDCtsoefxdHHhtkJXno3dzXNd6+HbtnTD0M6M5eU/Gei4Pdy1fdDahkpsxxUaZpw2DeKZSsVyo0cDHg5uq2e1cegKAytoFZydw0V2pBOhUhr7Hmt7Xqp5td+fp4ufrjRmpOh1JMPLqtyauvhmaFTeVgMigFmqaKQGGDfy08SNNc9OSnqZc7xMFTezrcbZcdKkTpCy8I8n01Ox1GVtUzM2YWgC1q0DXHJwZ6dHkWy4dMqKTZQUy0rEXKhTGZ2JsoIKGw2pSrq9tryna9C/TLhcv0vMz1v1Odua2SvTry6N9L9XHFbxU0q0TzV05VTn4nC2FS4tw+pworDq4d8N++cXTU7ed00M52zO2K3Tlpc7Wc/S1ki9YqbxdkzMtVo7kzWjkZF83Xromc9LrFsYq1gy0fRul7XTVZt0Z7PuNZo0DxV6fLc6+75O7XqE+Z3Oe/XM+s5fm31OjsB18Via3EgBJABn0Zk1MXeNNBJefPwXiK81eFc/TrZz7C6+3g9HSNiL6qnEroc9Mdl0IgLBN50NLbalLz/JXXh9C8VibuUoxlaSA9LFbFvqmq7urefMf1TXDBo0FQNVFxTm9F8V5N3d5+HSm7VJ6n4epUafTVZ3cEFbXncrZqtpqiQGRk1YZuz1b0XA0z8tdKcNctdNovFHRuzlN6LmKnZapQx1mvO37VZrI+8NSLBTk0c5V5KU14vRdCpHeIkc3GzUNrKo1T1tedDlX152RWWrQVC0QoL7sHQE+s2ucCOq6Ly9+Lb4MKzedJiE22rapJqAFbJrzPuqu8KzAGeBo7Dx9OhuLW3raltw7VmbUvldGOpFAZWFIZNAcEWQcTt+fV+WF25PRvdbUDIsqZetpqdMb9MdDEu35ESCdiJC0RAhDVKm9Lm9KoYEXMuRdHYvlfrnZlaVF6TANupjVlsqIFsHGkHIAwADg8n1nMyvi6IJucsoiuw7Ho0hY/GPQmUI0Uqkeuc9wliQG8Ds8eb8gxD+b0Luo2KLxZO+6+zTBZE3k1yW1Fa3oFiJACAhLYl69Gd2mbogaIrCrv2Rp2wmJpUxddh3Yq7TZIc59CnJtAqQAAAK8XueZl8rRVWGy5za5vpQxeuYiypbMzc6bYW5Ojs9k9UZ7NNx6YH880Jfz+g1y4imVxdu8usQaYLkE2tUxxNb1YRMBMSIoTKbn49l53ms0ppcT6HQ5nU1yqttKmLzZoZC2mQVA0rcKQKQAAABw+552Xx0WTzdCuhzOon1YhG2bcLFzVF3zxd35GJtK2clokczSwePzdbgZdb8mT0dQ/pQ6VYiXNSag+0S5tFqsAEBIEFhNPQx6rhkk1EEg9PZ873bjWuTXKlbynW0WatZawe6JcgDAAAAP/8QALBAAAgIBAwMDBAIDAQEAAAAAAAECEQMEEBIgITETIjAFFDJBI0AkMzQVQv/aAAgBAQABBQL5Jdlrsvo6XM7+KHaWPxRxKOJwIQMUCAhCELaStfWdN6Gr+kqvpzIkkJbULZLZFEI8Y/08rPr2f+LVR4T+HjUMDuG9FESDIyORFkRdH1vRfc4Pp646AiPZH7/QtsS74Yf1c0+EdRjep1f1eChq/hq46T8KKK2oRAiIgiKF0TjZljwYt0LyVsjTY+X9WRrcqRpMNn1V/wCb1qDYsZxMHjfiKLODIY2KJFEUR6tZGto7/pfkt4q3ihwh/UyZop5vflWWGPDq9FmnmnpcsCOnySJaWUUcWLGRxCgcSjF2EIUTiIQhECIhC6NXG8TIo8qhEF3ooo0mH+pKaiS1JzueVe6UbXpIyaeLJYVebAmniqSgKIolFCREixECt7IsgR3W67vLi/x2Yo2enQ4CRFFFGLHzlFpL+jKSiT1JPKc3s/ciiS9qgZMKZkx1k4HE4lFbIQjGJDieCyBBEUJdC7vHj4rN/pZjnT5Xs0RFtp1USzkX80nxjkzyc2y94+a70SXZROFrWYeOTgcDgemeiegeizi0JGIjElAcCjGiCEt72xY+Kszv+H9wwppY6Eu7QkLbGqh0Wcvk1UqxS9yg+Q0LbxOS2l4oRrsdw4HAUBYz0z0zgh4kLAhYeJFFE0V3xoghdGHGXtqO2n/eJ9tqKF0eelP4ss/TjmzObTp/jJq1HzJE/PmNEkVtlhzhxOAoCiUVsiCOJW0kcSKI9GKPKW+tdaYxTIsT6q618OonyJJpyRXKOJ2pKm/GQw94USRRQkajFwycSiihreAuihCFvjjwS3+oP+FkH3gIXQvxXWvgyOoOXu/IlCjH2f4ZJq1HushpvxoaGiiJqMfOFFFbNFFEetC2wRvZDEfUZdmR84xCFsyHj4F15n7HLvCY/cThxPzjjdxXtlmRpXs0NFDEZIcZV0UV8UVzklxS2e2vfvYvOMQhMsZj/D4F16qXtl2MciMiuSrhL8ZZezye6Gm/NbPaR+px5xror4nKjTY+MWLdGtd52R8491vh743vyRfQuvUStSja/F45kZDXJVafeMXccXbJHwS2lsjJDaivj02L1ZvsMiNiEZ3yysiQ3W+B+yzk2cWzivjl2WR2R/HLATox5CDJRMvtIy7/AP3j8EtnujJj4/JXN4saxwYxbRJ54xPtXI+ykR0kkem4FiYt8L7cfmyvtZj8SjZkxi7GGYjNC4qXGZhfYltIQ9l3WSHF9V7WNmmxcUM/ZkzRxmXWSkYctuPdbdjLhISIi2wePm1DoT90XU/JOJOJCXF452Putdip458oYXs3s9ntAcbU4cX1WWabFzezY88UZdXKnkslMhlaeLUe37qJ90halMhK3KFZIoW2n8fCunVSE/dL/ZBjROJKNGKVEJGphyWL2vCxeMhFj3ZFkWTjZKNMZYzkORig8s4xUIInNY4S1HMlmJZj1LORzPUlTyyQ9TMwapt6XJyjQtmafx8K6dS7L7z84/CJRJxPDgS7xze3Jgftg+0jw92JiYyS5ElQxjY2d5PTYfShLw8ixrPnlmfMb5Escj3ChJkeCJyspyIYZN6XS8RKY5tNSIvbT/EujI6hkd7PusQtskSRhYzVLvpZXDG9si7qVHnZooRfbkNKanHiSJMbNFp62yZFCObM5yyS7EEcR4RYfbj0OOItNpomnhjRR2OxqYqUYIjtp/Pwro1LrG2Mj4xMW0jJEg6d2tSjSmNiZNDQuwntQihraUbM0HAkzSaf1GvGXPHEs2dzfJIbsiKIojHOj1B5DT5O6n25HInLtFC2wfn8K6NbKk2MiY+0o7MyIoj41C7aV94MjLZ7J0J31UTx2vsX6sFRqdSsZPJbbsbEJUerQ9Qx5rOdl7QdP7zHjX/o4mYs0s5LljcZkXtj7T+FdGsleR7RF5xveYyBnXt00q1CExSHunRd7V1ajVemSyWNj2ujkWMlaHmmh5snBZM0iOm1OUh9H1cjD9DyGDSLCtSrxQRDbw18knSye5y2ssxTFtJEkQMq9uPtrRFl9ClQpX0ymoLPrXIlLob3UbOJws+3RHDBHtiaeUS0cxzJ+4URLfE7h8eodY2ia3RF0Ysl7yQiXiq1ot7L3iLfLqYYjNnllb2e1lFlWY6RcRyRyZyZbNPNp8x5lEesiQzxaUkJ76d+3ossvZb6vwSiSiNbJkXxcJWhlDXbPDjquldCkTyqJl1bkSY2M5De/nayzkSzwgff4T73Cff4j/0hajW6g02hs1mihixwlIxzZCW+mXUyxMi99WxdxolCyUBxPBF2sUi92amP8xQupyonqKHNybZKW7H1IaHgUxaOB9pjMWkjJ49DjRDDiiWqzx9WPpURiREY8fqNKl0tElQmJifY1Mrgs1CznKLONksBkxSRj7OBZyOW2oXcQtqK2zZ44yWdzORZe7HtW1FFCRRWzZp5uL9Q9ZH3KbUh7Iw4nlIpRXXPZFmeXHHqH/ByOQpshlaFPmpyaIrumWWKRGRnF0szamiUrZfReziVuijicTiRwykSwcVnzLBL7kepyM90jF2ISLGzTYHlEkl8E9kRja1s++bvpRSLEyLFNSHhs4NdEGZvO6VijRrdTyyWXvZe1iKKooRHFKR9tMWlkLSojixxGyfc1en9XDGHaMDiRIs5GlwPUSqkujwed2Se0I2zO+U5/wDO0UWzmRykZWKQp2Sxpk4uImIn+RGDYsaRZJ0uXIvey90IQzHiczHhhHosvbyRRl0nI4Ufos0ulnqCEI447rfxvLwJEVxRPz5h6Mj0GfbSPtZH2kzHjy42o9qIxkOFrPieIwy5r0bfFIWyffVPjp4+LLL6EitrMWDkLsLqsh3I7ShGZLSRZ9hNmH6WiKUVuuhi2n+KMca3epHmkeoKZyORyI2yhKtrJVIpRG9kMR9Rl/hJ9r+HBh5v9C6mzER6MFcy9vK6U72ZPxjh0XRzOaExCRHay9pPZvdbV2+qvjo0+3Qhb4sXMjsxdLGYSO9mH/ZtEXmQhbvsfr9KPJ9GWHGTQo2RxkY0eCK7RyDQpFjGX0s+sf8AKtlut8eOyHhbMXVIwEeiDqcpVKPcRI8oW/6ixdWtwe94e0cVCQ3RKRjHFSKcDkWN92+myz6z/wAy2W62xYRkPCP0+t92lRHosXdbMj1eHHz05o8ouBlyqJdKTF3nFkchKpD7Fjl3ZYpF9iyz6muWjQhC3xYOOzIeELrZjXvF04HePe973mR6n41U+EcS5ybJMw95djsXRJl9mxSGJiZe+rjy0yELZuiD5y2ZDwL4Mf5L8l06V+wb6KKRZ4Grcev6hZ+JJjZpzj2odDVqhkRreyyx+4ri0IlNRE5ZXgxcXszH4F8GP8rrL06Xz5JRpKziJ0Nnfam9l16pIskxmm/FS7eoh8WSdHPtyssvr1seGrTJZeKV5ZYMPFY132Zj+KP5S/2dOmdZYP3VUaLHbF48CW0e/wAGudIkMwfjHxMcmhu9pdnsur6rGpylStzekxRKF42Zi+JflLzB9N0Q/kj43RJ8RbXYlS6v/8QAJREAAgEEAgICAwEBAAAAAAAAAAECAxARICExEjAyQQQTUSJC/9oACAEDAQE/AdoIl3r+NbAkMaHaa8lgp9atk5Z49cOFkl3ootlGOHoyTHeN5Wqyx60rOCP1CpkaZ4kULSWlKWRyMjY3glLL9KWRR0yJHieJgVs2k7znnhH45JoVqr49UVd3ovjTJ5CY2O1SX1ah0SV63pihO76vTlhmbIejJPA7UPiTvV9MBq/1pCWVfOs5ZY7U/iTvV69MTsaFqngTztUlhXxnoi0htM8RoqdWzuhMfJ1Z6RlgT0fHJJ5EskKLfZGksH62eEiDzwySKvXoV0yRD+EhaQlgVsFSfkyEPIUEhHRk8sdnb4Git8fRGzvDsmLWMsEeStU/5RCnkjHFsnI4vFo5TJMq9eiKs7IXZLeM3HohTzyxK2Di2T/B5Ly4JkvQrNaPZLJCjjsxpgwShweBGm1yMZJc7KydpK/1rGk32Rglqrymkft/hSqcck2SeCTy83Q1aJ4niJjMGD6vGLfRCmlpg8TFnJIU0SimeCOiUsLLJz8tEOytgash6QjhYvgxadRIdZjqSOX2J4IzUrSwuWTn5PWJJ2wZZ5M8jNvLi8e9ErVKmOEO+CVv2yRKbl3suFdD9FP5LWpP+D0RK7XpUrJbw+SEK06n0rP0PV6R7s+rq+BCs55u9Pod5d6vSPYiVkhGNIS/yOXkZ3+h3n6f/8QAJBEAAgICAgMBAAIDAAAAAAAAAAECERAgAzESITBBBBMiMlH/2gAIAQIBAT8B2myPWvPiy8rEXTs5O9YogvnPuiPWjkcrtaoWZZWOKN/OUj9FyM/sPMcyxsekdOWNCRQkJEVS+LdDlmihssssekVmEaP5BFMYjiXv5TYsLPJ6ZelDwsccf3H8jsjLPF8ZMayu8zja+CIqxY53/kRzx/HkYmVj90nGn8IRpZ5P9iOeLv4s6Ex4WGNWNVtxxt56HFsSaLEcffxsaF6OzoWko2hrRe3RFUN0S5q6HNsU0eaJL9Qjj7+EsIkiJMgPKJxsazxQ8USnQ5N5SKOuxM4+/hPEcfpPogPWcbJejh4/1kp0Sd5sUveJdEUQ7+E3iOGPoiXtKCZPkr0i80eJ4lM8XREXfweExDwtLw3RPlvrWyxSpnkOaYsRfrZ4axF5/dZcqXQ5N7I9EY2eBOPv0RErIqllieJCmeQ0hFlj7zKSRKbet5o8WJ0eTLIq2RjWjy8WJ4aFpJ29ows/rR4Rw1Y41iKb6IQ8VrISxZSPFHiiseOX1tCH6LNkcf1xIxUetv3RfCXWsYi0ZHN/GUcNiHm8S6GPEYf9wtVlarSXWF3hjzeHjxrK1WY9arSXWI94bGJ6SXsqvisw+P8A/8QAMRAAAQIFAwMEAQMDBQAAAAAAAQARAiAhMDEQEkADUWEiMkFxclBikRMjsUJSgZLB/9oACAEBAAY/ArvUjGWTn5tDgmL4iXT8ubghCA4m1Hpj6W20IkOA8PuhqF0Qe1zceKYvlAZbKIHxzNv6D9KKM/K6n3zAf0BnRMSPdRRZcqsKwn5P1a3n/jiVVETJhUGh5Ef1ZZNwqpobUXGbSP8AE2X78ImYiZ+/GrnSP6sjhHRrT8Xcdep9cp0Ro9ojkRcrbI1r744Hc2RwDL92n4W4ywCyOAZmTcnaE0oHiyOAZnT2fPA3HJmPiyOBFMybta3C85wJ4z5t0VTdimdPoLPi5tCaZslPuXuCqROVW+bG02mNzccmWuey7CYxQ/xKeCZ94QPE3nEndUpJlZWVnQtIeSYUOEybTcVXSsmWWdKgrBlPBew6HBYLzo5VcSuj/wC6UXtKchUhVaSG8UeZvizo502ysVWOIr2P9r0wwj6kf5HOiF7xpvixp57Kt5uE1yIX/wBiYLbD7v8AF31xgL0xOvSmikHKI4G2DNrCdf6l6YIyvaB9lf3Op/1TQpj8cElE8p4iyaCgt1WFjSlgck3e57Ktms1VlVKYTNcF37t1TQ0CrcqV7l8rERXo6R/lekbAn6zx/kv6nTo3xMTcF2E2vSqm9VYWFhVWNNry+EwuE+ZsJphY88bKYS9oUw4XlVTzCdoeFQaQgwEv8qkCpRVJl3RUg/ymF0QqKZol6SqyiYwD2w3qDTIVYljWmYazufYEwvEqIWKr0quolJ7Jz83PCw9nd0/4TGTtB3QhhFBwGWFiSsNJK1TjGjmXqn9pubjiydfUHVIm+174E/UjfwEwDC6+tAAs28TOuobbnFoy1vPxz5iFpzi2b76+JWmomiTjUWB+dlzi4ZQh2smxu72KG3D+Vh4tDaZNyq50F6LwQZ3izxBaFnfFgSfKys2+qP22jwW88ILb2m+ULTd6Jj8SwyG2JiNHzwH/ANsuFjSlvqfb2TbeYeVEPngn7kEht9OPuNKp9DIeFDEc8D//xAApEAACAgICAgEEAgMBAQAAAAAAAREhEDFBUSBhcTCBkaFAscHR8OHx/9oACAEBAAE/IfqNIyeGxyNm6W0/SuvY0qNXlthYKUCQNAy8IyUQ9YudfJLO/wCzDTILQwtCZMJULLSE9C4PRP8AEkhOSFj/ALC0dEP6LWUJB68EhsRRGViuTknisQNakhixDTSvuzbycijCUCBIESqblW9fxGzt5omO0efkcUJIf0ZJUjQqZbNYnYopQSX5VQhYaFxFCwxHONMKQuRAg1vQlChfxGoY26TRK2rEl82H5ROIWhRFiApRLYlIh0BOOZgWsxCFiJJ3fRJYdCciWAtYRHIjlzz/ABWHYhJFU0hep3Qh6tM3oMadfJPzRDEwe9iEQYI2FhLJhw4FgYYYt5wiz7SIUCWDoSyEFhmcVL+IVy0C7j9xM05eQi6BFalWiBkUEYjkh48khcDFsGoExeAkLBCEcCFJfM2bmqJngoaySCDutyKSqEiZ/g7QJmD7smmXLGwQtpHBuWCRsQOEQxrkZV8rCV52GJFiaYQs/CBISNEogq7Y6/5NG49YkVMiSN4IJVjSROhBS+tOPCkmzexrUySbIw8gcMF0gGDSg/TBCxJkuiHgXDHdC2SIoxb+D0ZW3Ctl1sGJPl/0QEpjlH5YhBAfQlhEigL6iD8tGwRu5GXQ1DE4/ZZJAmBCEjofgOqkFwLqG+BjgkSkRD8jNk3iNfgH0Eh5HuIJgJyRY5DgILYlCWSUEZ4vpSpfh0UHAquLLpFIYKIxKB4UYI+HCsp7QsnrhAggdRRY0oJSMkWKZJJ8EhPhCok+Uwv2NwPROsEyNCgi0JykLsJRhvKGlfRnw4J3wVShDvW0RbFmWFMZpHgnJ1xQRRWYaENgxjQwmLY24W2QK5EGxMjIuRBq8BLDx8BreG8Tlof0JJ6Gt7ISH2rGrY6nwLEb7JsPMB+DzQxUba8NE4NjbBPLIIzTBP8AxCtmg4x+SPK0wYYWCz8WNGzehKPBpXnEUJmESDnnga+dFk2iyIGXNEeBEhjVDJ9cPCCBoeFKGIWIIIEJjFfcEITg2OM5+tknpYNkMbPrDYlJEeL+cHoQracM0DSBif1DUaaYkKi2DQyNBoUSFw+OYNEEYQQR5JkLLouyaGJJE/RZKC1ltSbG+AMKyYPYJH4b/Rg95nX7xyX2PO2xIrDuHrBCC0NDPiOSMGEiCCBYWIGMhjogesyzEg9qPgtmgmSMJ0clhexorZxIiCV4rfk8pBKyOUY+CdE1BZR+5ZXYqYPI4wWx7FycjcPRsoQPY/BCyySdjFBM1MJyNoP1IbTon0PgwcHtKvQ45K1iCLcik5t9aAKTXseYEIgYzc0jyicPWhNp4D1gt5diSHGDatDQ1h4nBPwLZI1jY4N/noEcJ+tYhlLhMclAyGdCQY1x+59JeML7Y8e9ioTkbGBGw2cysc1I4LhbxWxBjUVTGegY8MknK/jeiYJFK24HNCWUFHM23jnROkiJxAXSwRcnYhfScS0M/YF9HTxteJQVEixyBtCcS3plr4ZWGkJySsscm1lSUIqPiGsHAbIUl1yyAOBpGBtIczbUcSIpkOSiw0Wh6QPOQl7ExL/CE0OfsV5exUvqpovB0iU2Kg0hqYTLGkDSk0XkxP1mTsJAsokU5Q1ZxjCxYwlYHvYudCKHe2JQuW2MX1//AKRloXhcCux+huEI4SEdoXJCZKWucNIhG36RBX+MiJn8CSuggiNicoH9O08JJ6IobhjwsalhvAsM4BS4faWUjshwiYWiRDKOBsUxcNjNh8hHitr0Im6SjnhdEEDvktvCkaEN0khUnKGoEzUz9jtf2bOR3oJVGhLrkiNFhEG34+lovCWxbjTA4jXCSiB+HjaPkKSQmWFmJkcYLBoQiVClhlx+WF6UV17ESoXq+In7T66NybJQsiCNaFjbOIxXwOVyqxSR8hLbC0w8RIII89F4QmFtiwPWUpRjiZsehwNyijIxIhAiTYkWFvTUpih3OwlUikJXAwe5ty3zjSMnJuNiRNIjbGbMkLCOeH+bJmp9gOf7letTp9k5OiRpfvxjx0XhPLoaxlBoEqEMQSzQuHveR4efeczBBGEZQ0k6Fo2fPoYzly2SjcEChG/IpIkNcli0grU9HYPhDH8obUZNqS6C2iEhD9jqMKQsJwMaUn35QPC1n0YifaCRigsR5WJEXFGTMfvMQ1CgXE/AKQbgTnEj+ohOfMcsmJGxLsuoUtiQtKPgNeAm6HDBLUg8tISuAolZOPRERLMj+2J8uRazPruiRYWhjDHlYCGTiQxZcf33D4kQVCZQ0M09jSKiRTb9Inj1wuhx2UJguQ5GvAmYZAahjRBWD3kYYQXyUMOWfYgIfEYZM3JMeJJyoyaZakiidEDwaxMQ1rHMTOWOCE8R4EKQjl0kTXynI1y2xMQEskmMUkicifsrsQTGRv8A0KJ0+Bp/wBwdj5DBJfelZPufuGqXm4sVfJVHCeG+nWIy0ySF41u9BkhAIDURE4VEhTJKNMagQQgSwhsSlsXSz7J9MQokG2xiYJ4TGyyx3D6knVCRwI4kNORoTpJJFmoiNCIWBh3Qm2JUiEvCCCQkZKYOsQnNsU9i9UhzJlTWESlFGKuKCcln7EhBCBBjkQxM9BxbzuQzgmMzYhGKHwJ2KmCbQ1lhEsJyRq0LJJUJIqY6LDRz2JKYSwuvF4IYUESz5dFl+8E+UmicBW0hecsJjfBMjf54IRAkUUul2xbu32Pmblk2ISSNikNImwgiRBK8VB6FI3jHZbNoWxNUYk2xfcoQl1rB7BBA1sQFJEJcCd4dCc+D0MLBkhTOLYkgbhiBIII9MWQShV/tMbtIGhsRAW+USEIfoI9hj3wfLHPCcOhYbEGneDJBINmwLqX5wfnz+EWqm/eCqBlCXQyCq0VIRVNZNj79CVaISpIYexOUMhjTOhIxHwQlBLnLLepgbIgEyI2RpQ9aFrCyJZb7DmkZdxjA7ix2gS40kkp7mnBskYYTNiCMoh0z0PYU8nbG6gTJzyTJ4tavn/UTO0NNdjHODmbVvv8ABE2wOiZyWjf0PvDQ7NkzgrMM2EnQdjmDaJOEetHSkQBrE2kCboa9D4lSDu5/1NQmJkvhdC1lg3gxrwTOJsPC34CCdDDuL/YRUWhxsTGySRwQ/wCQUQtr9uTafokkiv3f6F4iOiBKWRpLDGNnTNDph7CEKW8ubMaEuyUQTEh1Cd7OgSlfAyu+QkqSWBaHGHSkJhcpL9olDKYiRWxISzQdf2NaDxkQ8NlRr8jXEjJKpokghORP+gaJgQhkCDp4cBJbXgygLsFvki8CJvQqQu4wuiyBuMEyTRoMoIUuBiTImxSJMQQWPUP7IJJKljbJZbHX5GuJweE9k0io0JduWMky7KCTgscDRtmbG00Eo8GsfaGocHDBoMdkMgccDFbKGToXIew4wmTTETY0jQntP6Y9YYSrJY6Z/Yq0DnHhLDGaCOG4NMSSTf2Wb0OSaEgVymjuF1gsNSgmElQJQo8VOBDqYyUKEgyElob1yXRJq4ljoivjmRMmhMVMGl/r/THFghZTwv4WP7GE4VvxZQTkUqTgbMm5FTjakQhqNh06EIR2JOJ8+Z9tF3IwhbE3aY6z2MSk7BkUMoGopoNQ4lOagw9r/sj/ACPggghCoXdOsbm75NsH4vCSXQreCYx4+P0QaJsdsISCJuB0/uN/JZdE2OZ6j28+srfCFXaD/wCkdSkDTfRfBnjGEpEHLEuz5DP8XjqLKEJux6epQ8/3Bbwe/Jm74G09eJosdMEIucK0LuJB1JnLIBi+cjRclIk1TFOLTfbwP1PgCLPAoCwbYHsmBMTE7Fg30jE2qtoYpAQy2QNISptzY3l+xkx+LRT7BxPdC8IG/aEnTRV59Fsm2oNDmKBPA7SUvkbloSgSF57Hk2dsTFEcY5yWOiXYOnBJlgoMujbzAhxwRjU/ssgFE50arIZ9Lwf3YXnAtScOjF4+mUJ2AtiJPcpoSwuG1/zRJexwi2eF9B6XYkYYp8eBIZoTb+mIQEJxgniYw9C1m439v/o5zFMtsWS5CUSGCxobYr6GoSTJK68bJXBFKsjQ2QdCI2uCyTIStUSeyg8//9oADAMBAAIAAwAAABCjzzyjwUFvgAyDXkjM0Q9OOzEDVNbzyjyjzzyjoXPARzKP52qqh4X7zEZpUNzzyjyjzzyitk4KArqSima7jZYA909HpjzzyjyzzyesU3kg39zktdVafEBgywgTsZjTyjzzziDZqerYpIjgCoLDCoiOA5tHY7gHOjzzyy/qGXdqUJw5MivhvA05NekQ4Ao06DzzxGjiGhKu/dqPKqEGnvsAkoQ/EaL0KDzzzlI+anXD2OjdRTpfqab79SYn5Btm4vyjPgcc2en5XzLRi2uqKzvmvrBMypkcr/wBkyLrmpS2Qel3Agr4TP0HXWYESqV/8vwhkYfnvxPd5KTFYprtJjUNhwOjzlf+OryBAjQ6VjINZHXHjjfEtWFyKJ45i0NLafywmzmgu3Gt6dYDNtoTdBRm/r9I8M20VvygapjSy8fXD6ZNAZC/SexzJY1rspULw3x7xMHcaUeg3lzJApGqLlhamFdtfHk9XY6IBtiI5/cZwdJaP4ZqjjREcP8AYVNzbkO83rBEG6lyDVvcw72+hYu5lYT8LuxJC4D8XAWbaIvGz1OLkO0RZSPZLkjcFPb3dDg8acaX0XM8tFdj7e4glJkXIh9Tx8MAZ8o85JcUfN/6PjFDro0DyVTTb97WjzF9H8A89Z7mgsyRk4u4NXlj0O2XRJmWKqlO/wDAPP/EAB8RAQEBAAMBAQADAQAAAAAAAAEAERAhMUEgMFFhcf/aAAgBAwEBPxD9bP6FilkcAcptX6jgl7l2XCWyLZ/j+M6KWr8p3cQRIui7cbdzZOPiWzYfxu+3oEr7YCV9gIxYP4JweFyHefIjqN2lm1m2f4XgQXkPE02OAZalyNS4cC7xs+EcGZ5LGWyxJJZ+2CeuP7Q22mLLYZxOrsuu9cfFwezYt423xby/nR4H+r5wbbf8NmbK8cFvDFs97YIZwPHkeA/Z3bBh2L2bDHCbbweNkuoOHyOC8cJHpF7++hdCwltmaT7ETvYBpbztt0x6xZraWQAFugJ4hvRK5eSFgwxer0Ej3EcI/wDIE0jjJh1I9Z/BKbAYJ1zILvLEwEMf5eTrB3PvEJew93YiJJXj5LYLB3dQeSr/ADjAeEZNSRMEY57Dt+Xk2fb3Deksg7ulnGwzvHyYNOAR78i8Swh6u/2clZGwEtIa/wAvPVfI8K6w9yRPO28R+AhAfbB5aQAk1qxmB1A+R0SeN4eCcd2kmMNvd8yWWSWSrCLt7jhtjaYUrNLeMmzsmWWWTx6h4Tv8C6J5zbtOkDgQcdQhKXqP9uhWemGcy9hYxra3DZDzjWdyzyQbvwYeOUcn/Vs4CNzCHUBrL8u5syT4ggRf5+PfByGBezM7UkML5KWrAXDYhAy6X2T4SPsqapc5CacMfhPt8594H2w640wXEtO+Gt2w2tkNJwFnA8Y7WRGuAo6WD2a78vDKF13jDAJn/LOA5G/9LILOMTJ6vn4e4k6ujb14YkyXeWDLV7b6Sf1HcEFll1TgJt5+cDzk6NmOOjnCTwtN/A3F6wyEBA28ZOHR27loHd8nlk+cDgn1DOB4h+ktiwEvyC8QG2EBnnl0mVf5PTOPkxy+ruHI+vA5P92bP4//xAAfEQEBAQADAQEAAwEAAAAAAAABABEQITFBIDBRYXH/2gAIAQIBAT8Q/kAaDbwVwPAs/wCJa4II7eNGx7/iZbhHB+AIcONl4G8shjkPMLRr/GBeagW1kzs7tjgv4EQbKzZXucWFu4R5H8J+pWdfY7mMxcnjS8s5Azj1M9SJ/wAhpC01bD/AK3YyDq9JZZHs4d8e8BB3dS2+rhdS0M4y+7ONj84HAf3Z3wZJbf8AdlkkewzHDRkMltJ7jj28bH7NicT5PRsknpv+JZZZHI5dw+xM9V7iJdpfwfju3biYdW+Xifb1GMZVjZ+Mu+fCberQazS5d4nFSy92HJy+XqJJKjpPZJ9TPsw/7SDjPGxckJwj9RdIhrY948kjzynJysJerscK+R+y6ujMyhOnth0y2rdg+xH/AGU2T62QWXoLQBAfLx/JyvlvyXUl5BsXUNLeAksensFY3ZRnD2X1w+QIAQlhRYF0P5Oey+z+cG7xZEYecu9bBDG7hMOX/cYYM6Ve5r7LAx+Dhj9myZaQ2zq9Q28E2AaydPFvGWnJkNnLodicaFtttjjxJvC9c2WYo53LpO07q8ZZIyQN7n+u3wEf2j7DIpIsLpuMgnI+skIL7MNuvE1DtHAOt/zeC23gvAnyy9J4tGvZMCM/jxEbPV4OHg2Ep9gbMnZeM4W2ShewHyMOgtEz7mRyFh9584Xy24SNpwG3XAC9aWFsu1lnC8adrpbLOLtIPTaOZHdLeC/yJNgZw6dWmOof7t4Xn2mbeNu28X3jeHjgeyO2XhwMw7BnIrsAdHEurpL1Lw2WrguPpPvB5e3ODx2N4I49Z+Hmrwu0yTJyOyHOC7xxXqPp7bfeDyekuEnGC8mH4eReBULYk5+DeBk/7Hbx9j8fb28ZL4cexbkfj//EACgQAQACAgICAQQCAwEBAAAAAAEAESExQVEQYXEggZGhwdEwseHw8f/aAAgBAQABPxD636GH0BcUsEBd1FrgU8rHE58O5fjnyni6Sy7sIDemKHUcNSwxFXLjepo2YQAIIziY1QWjHeIO5kQmDCRtZ/bIFXlb8z+IBYbrLBxcA0VFVInLqUW3iUXKly6kqg5l26YAmRLpl7efofpfpY+HwxRsPPogllNUvZ4gGwjZN4suPnnwQFFcKffxsseYqcwpwksSrlAhiBSswnCbC3LgxgQh4JcLjLcKfJ6inTaGRzQMkwKgtqUUIBmWacMwRCzVZjYahx7g9bbK+kPU/wA7Hw+KhYSOQQzM5A4t/Up+pSu6v+Y8xgx8vg9QsYta6iJ9QGjLEUFw4QjcUczIWxAJqGOViUhcABioTRq4fUc2BioQ5A95gljcwUMORuULcNZOIh3+CWgyuDO5ywmpSyvRAIKAoPpY/wCFj4fFDJjdarsxDGRb8w6lAX4itZfl8C0JwlEziXDGCVsGjmdCUtRFiKIeuqgKcIYAsQxljAYgoI/AdwjJhTBV9v8A7GjEs6nJxPzIGm61CvKUzR7gqMAWrVEGrzLXv6mP0P0sfD4TYS0QrwzdEHyool0la08sfzvglQE7EV4wuiZkqaU8IzFQBqUDUvrEFEqCHTEIZCDpFXUFeCWmyZNwCxMAuLEEyhCDEuCZP7HH8yhjlswYiCWIXGqKGorwwVk9SsPL3/gf8LHwjGCIAgBtHGtbMWzsckDISzVWWtHyQaCHRCfxYPHFAUANVBIU4iaqDqUMoAhWMYCIS6lnUySrmIpDQVC0S5UuwVFc2go7WOYHKewv+IUrUsjKuKGYiCDUUxxKQriE/MTiAsgZXRKLboCA0fqr6WH0MDsT1LXMN6iU7r8rD23DLCpPYCDSxGtqmcriEpNscsiTeBFXEr0hKjiMcRC0NIyiXNUuTEE9xck4hiXVZlwslwFSoMeA/BQrWUg2vEEOT2w3/oyju0uZouDxtqJSVuf00GAmDUo6Q3rlfqDNTmI7AHX1H+A9YaHD6X4lUbbmRXEbEqmXD9paEfWYaLnA0SqGEV7gz1LOIdE4JLiOKqiFKjEtQaDCHEFtUqucNQ8WQgMQgMQIXBCHSCILMBD3Wz1ADcalovfuinLUFt2ykE7Iiq4lW57oYZmHaoMTbHEuuJhzFE7CDZZ9T9NJpYPtBh7JcLTcd4h8MWPjCfdIXmdC5qLVSrcncJLqNuJmqp6oRpBEVMjM0JuEa+MFMG5aSscVDkJZolIXKBGsVW5qVA5dHicEW7hesPziERfcARxCEChpYegS1qCcQKR1cAxwEGUqjUrUTDLFl1OV5PN/QClXo+ZkwHMVltAmbMwR5CC9yhufG2eyiYeLgQo5IVfuLsWRGWcSxMSgqpUaiHPUoT0RzkhuE2hiA0lyqxKrVAZUQV4dptFK+5lAaDEILZ6xPY/oTIgFLMtdRBMwIqiC7IeQwGA5JhHIR2AGDyXKipgh4PqcQXTEOWWpjaoTnISw62VLplYIMRfEJW+DTC0MVK95f3hLqGcQAuowBxMsxqUVEJKuoHdyzcDiCAxpqIwZaGZKIAu22YpUS9jlcH6GMLGLOGLTM73EIalXjcwRKqWI2iB8FBUu2FmEqfEeD6lD2KoqPKFa0xmlXK41MsD7odbq5g3cGkS+6MtJYVUo4jj4KlF5yFWAJYlsKzEjzE6IUmPcuLN4KCqYbjxGi4qlgxGD4KBlDLj9/wCohW46NyiYytTOlSzwoG4rXQJoi0i2mVUGfpk+oiPJLlHTBpKY03AIPlBp+KX/AEjHaaY1/DPu6FjzRc8ObxHEwJksjAxzHO5ZxLoWNTnJQi7lYjeGpMGZ+opqBZty6IZdAqc8MQ7YYmZ+f8r/AFMCFhGWgiSlgYyEMZhzEPqZfL4k9CAGJZ4IzcQ+qgjtnV7BxmUMo+K7lIdp80ucRGUB2S3OYbExzdLiDVwIDCcp7lzCZ8OkTcLRAVAXqFMwzCOPNG5qN8Hceo5/girMcWkO2WpV2h+k/uGiFBRZKAhgvqPOoOBiLYsLlZ9h/MpgVEnYRs5zQEM+GKpPpWi5iDxBtDiUk4loFy6sz9aMcDhrwPrZ4ipO46PiDKDLDmXEDYj3EC0MtOo18MsoY5wqr4C5VQXKuX3MS2bGL8soAwa8DuwAqWkJmdeB+ZmTHSYCNUFedMUdk6iEMjEq5R/EhKtRTS12zKM+icfbCjAQvwx0YeXxeudT4mVKaWWDMoWoDQsEqZQqybjVWHEEAcZEx3uUsYwWOK4qsOIJsLWyMq7WvUIwgHUWmVCUqCYGYuKiAtba+CAuFGfcdpFkJhYtuYAQ2dp218sfgTXP/ceZX2Y+vp0MA43ORAWJfWY7cwkmcmYoBa/hM8264gAUFeKWAH0GyH0Eqz5ZZbzhI9jUJCojIQz6lwLg/NKyGExFdKVi4F96WAiqKsPiWYUtCqQ1y1FYLemIRiVZLS6IK/UaGIjmIBlIG14mMeo6JpUspMSFwHh4Nn/Iu92d/LPQFwunVRTFTuBlwgtiHV5vY9SwTDjmZcolauc+CBDweXxkH0EtTqLEXtYvHwS+CHEywQRnEMcyrnNSn9JeIXNIX8z8ZFuakMYwY68YUy6rArBjQT0YaILI4ZSICfONeYm22UAy4PL3KUDULZjKAHLGLZHWoixHJuOQflyxEW4HswQEYzcUg33g6up9xEoMdBsFQlKzlcXmolEQyl4PxoJXg+hjNH01HfqYr7me9y43DnvxETqIXYJBYBpYxOLZiZq+JQRDCDklRHEuCFGMNTaQxRuIlriOaIKu5cg1Yyn3lC5lyNW/VCRgCsSxDcAYvl6j/W+K0fBBBHNYYiN0foRODMai5sEZuzZ6i+n2Ziwt8wCB7Elp4IhA/MtaWm1e5zME4xGV3Fh9kJcPqfpysXgmcu5UnuH5xL4ZENkJRZUa/qNtUVazUUDgYZQlDL+ZUDExi0FqxNajFHU3UMRuNVvhioHxLMwVcxVcBblILdARsF5PZKUSjsGg2uic8T4h/LAbmg0TEKnWIjIU4hdm4odPNDNcw8F8lpLzTM49mrGHsn24LMd0xSfSYIrMNiUy4cxWLMWT6IQ8V9LNf0pMr7n5meosS2GkQFTa1OHlubKS5rDDn7xAvdDLiXMTMgRFUEWSrSoCShsgLGYy1ZJiJhIxD8oxWnD3CPmZGN8zg24PCYDUYVg0cr0SzPQ3A/uU20t9spbqIOdStbJYmPcqFouHcSnZKIP9Sgsdn6y4SBnRIVYVyrpEOQIaAcD2dQiYiwdmsxUfcEPB4Zrw+dXilXuMids3h3LFcTMQrHg65cYiH1AQJF6Zg2ixKxmCIN0yNRyuIRpKtTPFRVXEosqWLNTASOwsf1FFCrUFq45ISw8pRhQEUDu0b+/UrBWgaHqZDDxlr7iIGEA3MwQIsR+ZYSyZwuordH7gQWFxmGISHZ+5QVbEuZshFZhD7I9VKBaRIDxw/wAezrxAsjtsbfzMJ3LRCDEoOJsxEz7QllzJUZVc0ZhTFoxyiP1AwRREkDWSIaykqpTYlXfUk7Z7Ls9MLoYAIgaDLx/1G8otTliJzgibMSwVMSkcEvxYEtDDHEYVV6gi7gld5ZltlSiKhUW6G/xDdr0YiMA5MYEgtMg9MdE9tHKVpqhBYX4q4+VR39KptswjyrjMpWpKDMVkFkwsqlFiWJ6jIumHwylYpLClhKyGfCAmoYhhNJvCz3Ks1MCmM3R2Q1K8J/8AcxwZFq7YrS8M4UC+4FmFjS3iDsVjY2Qa0rFUA/eV6AgDLmYcWeElEsObB+WJjZci/wCrhg8pJz93+o3Q3LKAFp85aSMJiVGvDdAjBM0Bgy/KXGkVQ3NXkVNIxJOSyw4jCzE0MLBcEKfFxiKLETRPsaNq9EVMvEXyu7JaEdbhPhgjcCBriKrBCIHlY+l1P/hUe6trLLlt7lrRL21DKaRZF1BXJgghGSLHKbjAOdRywSUP+ufu/UNGCFYUg4YiKpjMW0bfcKmIYURKiYxM+ZC32lwi5cuXEGBUavLgNLg4VLiVTFlmGBEhEFismZOh4WsdkRXQl5lbUWCGUQ3aXQiDubYikzMVsbscmCwn++ozxWjUKO5Yw0KnM3csE/EAzI2jcu10QoAWLUlxxpRMTYgnMTqrF6YTqnqGA6J3B0AcrUrzy01MSH3cVKSMCo+Avux9mCZJY87SC8wDkjx80tdqxhdIR0xF6m0OwYqWUIW/CyIuZkxM0H9ysExZYEq2ECpfEqVG5jncWlX7gwH8x/UYQVbzLcEMzDEPhEK5gBEdnUVHcqoYIAhozv3EhCdwpGzrDYUbpapwtr4xP5lFa8YP0EUJcZH7Z/1KrmqpB8HEYlKN2L11DWnU2DcQFy3mXZmAX2o++/4lXGEiXOBN2XNXmObhXV4Zfj4PBmJJG2MQBTctMReEUoNPJFoXUrRLLiq5eM5phaJUSoLwVRFmARAgHbHEOC2o6QvbD2RL+vEDGWERU7lphisT4i6g3viaU3zFa2uWP7xigD8cJvR6mDn8QkWtGAggniLKudROEGDmu5ZsVUVmMe49Jj9yrFq/4nuBwBQHHjcTyCJnCXGZViCTzEBXRPnR4gILXORFHGA3C2LpiraruNEFZ8yoWyhzBXcpQ3rTdML4CckSpSRcQXR/mOLw4CJqb3PsmI/MacNSwslzKzK9xhzzL3VbgvxNgkaatFuMMxx47IrggeCBUDPlqXJhUbMn3grYeXiASckLPmIDNwxeo1e0U1/AhRNII6jshxN+dYbJiypj4FmWqwIudowV7heYZwsWLWEdQcdxig+4gBXUUwmCdiKO5zEzhFEMMIzQDsHtKCPGLXX7R45HlggMdU/UeSx3Oo5th0BCKtdVGGH7wpTXzKpdZIVFRRyTKzPWfUzh9k5hUzKOzBMrz0Qo/tQFmxjqZe/+ZpwasyxETl7xDQqYAYBKWAHmHrg+66PXuCTNQDBKKTiXVkI1zNNed04fIbWL1MvYP3J2QIxbIzDO/O9HYwrP90OpVKnqpUTNMoiqYWMUw8dOx2xa3KVUF1+6/bUdNsRzmJSqi03pmQv4lbXupY3dx7jHhFJUdNmGIOWydKyG2vslH5l3Wd0lQsPzCA+koihQuXf6ghRQep+YgprMgymk/D+pSMXBsxAoxrrEsVyS7JlAFOLl0gRz0CgI9g9S0VEIkUWZO5ZYbIMIsp9pmccjhlYAAKCIi/olOYVLYxiHcj22IFuIB5I2KSUiD3HVB7RILB3VxZEirdCwhPBR2xi1Y71KKcEVIFO+guBlK5r2tymLfmZfW5vAxfM9sWzMHpLcypNxfBLWe5Q4gH2yjwOMHqWY3jRdJMBDSAedV+/6RCLUgpJUp/uGLmGFOWE2JZv07MNoag79vudncFrJgIqajmZ0YjbylNNMueiiWqIALWCA3y+GPzNOmGoVC9+COl+SK6/JEcq+8MonJmohK17INoS+IMWj8xwfIOYQ7D8SuiFA3NcvtzGZqVsBXxM9BofKV/MFd1xKMCcyjLcXF6gOowxBvRKNJZzmFAvCc/8AENCAYolQzOTNUweS8ZcTGMhqVThDQfczGFvtUH5P6lEVb2sGGjbsB+7moF66BQE4hqO7I2oQ1BhTbUWVxwz7njx0h5aOoeGT7SrZsX9sRdtTEVLF7iJT3LhT94FS/EH1QaDKgBNNCqp5hEMNAVUtIs7mNZaywM1BIV+xKOOaojW23iWxNRVmIWypc5lZAJdkrGWYHl/UAoAAqiYP3ijwizFcWUkzo7kOEGoWhrMGE0SXmnxa3LWpRTsm92NpUmYBBzFeYocQLHUujkMM2E5isdmXw8NHcYeLmY9kRGKpKuyyFu4LqwQ0YqF6SqkyRI+2fiVgPNTElsyRyx9pZhfF3GZbn9v8RcrjWypRxKuc6iGFcG5TmCRWpSZ7gCYBQEdfJMFFTFzFLxGYI8RX8KaYMsamRTKleifqF7sXgmdSnuV3QOeI5/YiVEyYosRyQ4YLU+mYI3z8y6fUUnD9kAUFBGHgJ0RCNNjFMQQOYgXeZjM2y/1n7h5174YZS6WMVgAtBjUpywt2bmmZJVC0Gah0YJqcQr8uFDGFMyIbmwwMTF1MdwTcWpuwGKDFA4CZpeEOZlZ5DFHNkAgbJT3NUuNZR9Ql3AbjFvQbcDAmnZcBUZ9wjeSW5RZG16RAVFCfB7K1POGMnPUABo8MPBqltjuZvKYakpCszBEuUNwwjhmJD8xl7QySxakrBVhMMRg2ZdzNd8zDADZUwrXHC1CIBdF0rDP4jXJiC28jAtZhrUGeIOK5jPDb7fmUMFARyPMLCZ0x1DuXOYx4gdgVQW6BKAi2RSJIUCcMboNAXPEsIaOo6JlCkaUdRlGUQJm2ObRNuyoDCuE5+8+CMPBApa7gxAoYvpdAgTQbTo6m3M2bYZRFvMIxHETKApy4+Yij6iDBQjFaLLob0hojC81DSDcfmGSGwxA3ES4Kwx5Ay8QEZtOEXHl5aWKmdkDMYalxRYgXONkdsePALg7ie4llyF/ZlBw58MksYFGO42/H+4cELVsBQkqiEGIpBsvR4Iw8e+iDWaW2CZaYv/jEdVXMZXM4BfuYQH7Bmax/eLBfjJDSDdrPlgUB4j2RCLibiKrlghpUuYYBZaVaLYSuf+E3zMLMAIaCoAoAQHCqQd5iqXMl8Zj4cYrMYeGHcM2aubeAwYlnjZU/9CABghO7YjslDEwWELiI+011AbAjdoJKWOXiUBzbKxft4Iw8JYk3G1D3qLQYf3PL+ZSMsOYDgP8AB/8AYBKH6gm19pVYqR0L1T5plM9y8nTLUJcXBULAEtbgXMUxAT5Z6sr+ZjcYTwmGG0so9R6b4l9QLg6I9dBUuZeIZlAFMefEZv6K8Qt9wFhgPhGDUG4xXnGD8GKcFXLM6uG1CKu/bAPZjCsSIIQKcepnFLWiIbM8xQXwUSjPBGHlxhsH28fuo3tOWW8ypuUYtau5TYGPcxQnwymor9MGgA4t+GKzWoCvuayVP4lwq7ZkcTMhTbUzja/cEAARrWB/KUKuXRbeCBhtL11Abs5mobGXfg4mh9JU3jkjrxUqVG0o+JjHSmGyyGIePzMjUsd+5jFREHqpcFTNGpQyo6TNqhxckApF7dwQEnt3EFrQQt/0eSMPIH1SxdRG42YqHymSOKlYjM4o1gNfc1NHp4g4NR5jqorzLlIO4MQVcxZRgm8Xyw/+cQQZQhPIVfE2s+EIhxCMOicPH+qaHs8nBHXgJXioaf5gqvcRtpUQLlSzqCdS44FWMwp2lGqe5RQW1ytxK5gKhL+UQeXk+4A0qy6jZFXphXrA6IQDjyRh4//Z" alt="" width="500" height="333"> I think this is too space consuming because it will be generate on each upload. How can i solve this? One thing it will show only when i see in django admin panel or when i see this as a edit as html through inspect.. When i see this without edit as html in inspect, it looks fine.. Like <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD…e5RQW1ytxK5gKhL+UQeXk+4A0qy6jZFXphXrA6IQDjyRh4//Z"> -
I'm getting a bad requests warning when trying to connect to the API I prepared with Django
I have a user API that I have prepared with django. However, when I make API requests with the Postman application for testing purposes, I get a 400 Bad Request warning, what could be the reason? I can write all of my codes as follows if there is any other required code. This is views.py code from rest_framework_simplejwt.views import TokenObtainPairView from rest_framework import status from rest_framework.response import Response from rest_framework.views import APIView from .serializers import CustomUserSerializer from rest_framework_simplejwt.tokens import RefreshToken from rest_framework.permissions import AllowAny class CustomUserCreate(APIView): permission_classes = [AllowAny] def post(self, request, format='json'): serializer = CustomUserSerializer(data=request.data) if serializer.is_valid(): user = serializer.save() if user: json = serializer.data return Response(json, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) class BlacklistTokenUpdateView(APIView): permission_classes = [AllowAny] authentication_classes = () def post(self, request): try: refresh_token = request.data["refresh_token"] token = RefreshToken(refresh_token) token.blacklist() return Response(status=status.HTTP_205_RESET_CONTENT) except Exception as e: return Response(status=status.HTTP_400_BAD_REQUEST) This is my urls api/urls.py from django.urls import path from .views import CustomUserCreate, BlacklistTokenUpdateView app_name = 'users' urlpatterns = [ path('create/', CustomUserCreate.as_view(), name="create_user"), path('logout/blacklist/', BlacklistTokenUpdateView.as_view(), name='blacklist') ] core/urls.py from django.contrib import admin from django.urls import path, include from django.conf.urls.static import static from django.conf import settings from rest_framework_simplejwt.views import ( TokenObtainPairView, TokenRefreshView, ) urlpatterns = [ path('admin/', admin.site.urls), path("api/post/", include("post.api.urls", namespace="post")), path("api/post/audio/", …