Ошибка 304 django

Many times i see «Error 304» in django, but when i google about it i go through many answers which mean that- «This does not really indicate an error, but rather indicates that the resource for the requested URL has not changed since last accessed or cached

Error-[20/Aug/2015 17:56:19] "GET /static/dashgumfree/Theme/assets/font-awesome/css/font-awesome.css HTTP/1.1" 304

What i noticed is that mostly this happens in case of css and js files,
I just want to know why i am getting the 304 warning if i have saved the requested file. Also tell me how to get rid of that problem and what is root cause of that error in django.

asked Aug 20, 2015 at 18:17

Rahul Rathi's user avatar

1

304 Not Modified It is not actually an error. It just indicate than the requested resource has not been changed since the last time it was requested and cached. If for some reason you change your .css or .js files but you don’t see the changes reflected in the browser, you can refresh the page with Ctrl + F5. It will avoid cached resource and ask them from the server again.

You can configure if the resource are cached or not.

I recommed you take a look to the Django’s docs for this topic.

answered Aug 20, 2015 at 18:23

Gocht's user avatar

GochtGocht

9,9343 gold badges42 silver badges81 bronze badges

6

When working with Django and the testserver, it is common to encounter the HTTP code 304. This code indicates that the requested resource has not been modified since the last time it was accessed. This can be frustrating when testing code that requires a fresh response from the server.

One workaround to this issue is to add a query string to the URL when making the request. The query string should contain a random value that changes with each request. This will force the server to generate a new response, even if the requested resource has not changed.

Here’s an example of how to add a query string to a URL in a Django test:

from django.test import TestCase
from django.urls import reverse

class MyTest(TestCase):
    def test_my_view(self):
        url = reverse('my-view')
        response = self.client.get(url + '?rand=123')
        self.assertEqual(response.status_code, 200)

In this example, we are adding the query string `?rand=123` to the URL before making the request. The value `123` can be replaced with any random value, such as a timestamp or a UUID.

By adding a random query string to the URL, we are forcing the server to generate a new response, even if the requested resource has not changed. This can help ensure that our tests are getting fresh data from the server.

In conclusion, if you encounter the HTTP code 304 when testing Django code with the testserver, try adding a random query string to the URL to force the server to generate a new response.

status.py

418 I’m a teapot — Any attempt to brew coffee with a teapot should result in the error code «418 I’m a teapot». The resulting entity body MAY be short and stout.

— RFC 2324, Hyper Text Coffee Pot Control Protocol

Using bare status codes in your responses isn’t recommended. REST framework includes a set of named constants that you can use to make your code more obvious and readable.

from rest_framework import status
from rest_framework.response import Response

def empty_view(self):
    content = {'please move along': 'nothing to see here'}
    return Response(content, status=status.HTTP_404_NOT_FOUND)

The full set of HTTP status codes included in the status module is listed below.

The module also includes a set of helper functions for testing if a status code is in a given range.

from rest_framework import status
from rest_framework.test import APITestCase

class ExampleTestCase(APITestCase):
    def test_url_root(self):
        url = reverse('index')
        response = self.client.get(url)
        self.assertTrue(status.is_success(response.status_code))

For more information on proper usage of HTTP status codes see RFC 2616
and RFC 6585.

Informational — 1xx

This class of status code indicates a provisional response. There are no 1xx status codes used in REST framework by default.

HTTP_100_CONTINUE
HTTP_101_SWITCHING_PROTOCOLS

Successful — 2xx

This class of status code indicates that the client’s request was successfully received, understood, and accepted.

HTTP_200_OK
HTTP_201_CREATED
HTTP_202_ACCEPTED
HTTP_203_NON_AUTHORITATIVE_INFORMATION
HTTP_204_NO_CONTENT
HTTP_205_RESET_CONTENT
HTTP_206_PARTIAL_CONTENT
HTTP_207_MULTI_STATUS
HTTP_208_ALREADY_REPORTED
HTTP_226_IM_USED

Redirection — 3xx

This class of status code indicates that further action needs to be taken by the user agent in order to fulfill the request.

HTTP_300_MULTIPLE_CHOICES
HTTP_301_MOVED_PERMANENTLY
HTTP_302_FOUND
HTTP_303_SEE_OTHER
HTTP_304_NOT_MODIFIED
HTTP_305_USE_PROXY
HTTP_306_RESERVED
HTTP_307_TEMPORARY_REDIRECT
HTTP_308_PERMANENT_REDIRECT

Client Error — 4xx

The 4xx class of status code is intended for cases in which the client seems to have erred. Except when responding to a HEAD request, the server SHOULD include an entity containing an explanation of the error situation, and whether it is a temporary or permanent condition.

HTTP_400_BAD_REQUEST
HTTP_401_UNAUTHORIZED
HTTP_402_PAYMENT_REQUIRED
HTTP_403_FORBIDDEN
HTTP_404_NOT_FOUND
HTTP_405_METHOD_NOT_ALLOWED
HTTP_406_NOT_ACCEPTABLE
HTTP_407_PROXY_AUTHENTICATION_REQUIRED
HTTP_408_REQUEST_TIMEOUT
HTTP_409_CONFLICT
HTTP_410_GONE
HTTP_411_LENGTH_REQUIRED
HTTP_412_PRECONDITION_FAILED
HTTP_413_REQUEST_ENTITY_TOO_LARGE
HTTP_414_REQUEST_URI_TOO_LONG
HTTP_415_UNSUPPORTED_MEDIA_TYPE
HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE
HTTP_417_EXPECTATION_FAILED
HTTP_422_UNPROCESSABLE_ENTITY
HTTP_423_LOCKED
HTTP_424_FAILED_DEPENDENCY
HTTP_426_UPGRADE_REQUIRED
HTTP_428_PRECONDITION_REQUIRED
HTTP_429_TOO_MANY_REQUESTS
HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE
HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS

Server Error — 5xx

Response status codes beginning with the digit «5» indicate cases in which the server is aware that it has erred or is incapable of performing the request. Except when responding to a HEAD request, the server SHOULD include an entity containing an explanation of the error situation, and whether it is a temporary or permanent condition.

HTTP_500_INTERNAL_SERVER_ERROR
HTTP_501_NOT_IMPLEMENTED
HTTP_502_BAD_GATEWAY
HTTP_503_SERVICE_UNAVAILABLE
HTTP_504_GATEWAY_TIMEOUT
HTTP_505_HTTP_VERSION_NOT_SUPPORTED
HTTP_506_VARIANT_ALSO_NEGOTIATES
HTTP_507_INSUFFICIENT_STORAGE
HTTP_508_LOOP_DETECTED
HTTP_509_BANDWIDTH_LIMIT_EXCEEDED
HTTP_510_NOT_EXTENDED
HTTP_511_NETWORK_AUTHENTICATION_REQUIRED

Helper functions

The following helper functions are available for identifying the category of the response code.

is_informational()  # 1xx
is_success()        # 2xx
is_redirect()       # 3xx
is_client_error()   # 4xx
is_server_error()   # 5xx

Im trying to do a GET request against Django REST API with Fetch API (Node Fetch) module. But I encounter an error 304 when Im doing the GET request. I have no idea how to approach it. Ive read about it that its about requesting the same data as before. Can this not be possible to do? Or how do I store this information somehow?

This is my code of a controller in Express.js:

postsController.index = (req, res, next) => {
    try {
        let postsResponse = fetch('http://localhost:8000/api/posts.json', {
            method: 'GET',
            headers: {
                'Accept': 'application/json',
                "Content-Type": "application/json"
            },
        })
        .then(response => {
            return response.json()
        })
        .catch(err => {
            next(res)
        })

        postsResponse.then((result) => {
            res.render('newspapers/index', { title: 'Posts', posts: result })
        })
    } catch (error) {
        next(error)
    }
}

Error message:

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
express_1  |     at ServerResponse.setHeader (_http_outgoing.js:535:11)
express_1  |     at ServerResponse.header (/var/www/app/node_modules/express/lib/response.js:767:10)
express_1  |     at ServerResponse.contentType (/var/www/app/node_modules/express/lib/response.js:595:15)
express_1  |     at ServerResponse.send (/var/www/app/node_modules/express/lib/response.js:145:14)
express_1  |     at done (/var/www/app/node_modules/express/lib/response.js:1004:10)
express_1  |     at Object.exports.render (/var/www/app/node_modules/jade/lib/jade.js:206:5)
express_1  |     at View.exports.renderFile [as engine] (/var/www/app/node_modules/jade/lib/jade.js:233:13)
express_1  |     at View.render (/var/www/app/node_modules/express/lib/view.js:135:8)
express_1  |     at tryRender (/var/www/app/node_modules/express/lib/application.js:640:10)
express_1  |     at Function.render (/var/www/app/node_modules/express/lib/application.js:592:3)

I tried go to network tab on Chrome and select “disable cache” and now i get 200 OK, but I still get a traceback of that problem above for some reason. What does that mean?

Ошибка 304 в Django – это ответ сервера на запрос клиента, когда запрошенный контент был изменен, но браузер продолжает использовать кэшированную версию, вместо запроса обновленного ресурса у сервера.

Это может возникнуть, когда веб-страница содержит ссылки на статический контент, такой как изображения, таблицы стилей или JavaScript, которые изменены с последнего посещения пользователя. В результате, при следующем отображении страницы браузер использует устаревшие кэшированные версии этих ресурсов, что приводит к ошибке 304.

В Django для решения этой проблемы используется управление кэшем HTTP заголовков. Кэш контента может быть отключен или управляться через настройки Django-приложения.

Пример кода:

from django.views.decorators.cache import cache_control
from django.shortcuts import render

@cache_control(max_age=86400)
def my_view(request):
      return render(request, 'my_template.html')

Django Tutorial for Beginners 16 — 404 Error Handling Page

Solution 1 — Reverse accessor ‘pygame.ru_set’ for ‘pygame.ru_permissions’ Django error(py).

#3. Маршрутизация, обработка исключений запросов, перенаправления — Django уроки

Static File Not Serving Django — Static File Bug Fix — Django — 2021

[Solved]How to solve not loading static files in Django 2020

Django : Django — http code 304, how to workaround in the testserver?

How to fix : Module not found error in Django

Django : Python Error : (fields.E304) Reverse accessor for field clashes with reverse accessor for a

САМЫЕ ЧАСТЫЕ ОШИБКИ DJANGO — Python 3, Питон 3

BLGPG-9CF15C052EBE-23-09-22-12

Новые материалы:

  • Определить максимальное и минимальное значения из двух различных вещественных чисел python
  • Pep8 python онлайн
  • Поиск пикселя на экране python
  • Книга python микросервисы
  • List assignment index out of range python ошибка
  • Код хемминга python
  • List object is not callable python что значит
  • Функция ln python
  • Дана последовательность из n вещественных чисел первое число в последовательности нечетное python
  • Как закоментить в python несколько строк pycharm
  • Python калькулятор чаевых
  • Python датафрейм в список
  • Python выход из программы по нажатию клавиши

Понравилась статья? Поделить с друзьями:
  • Ошибка 304 ваз 2110
  • Ошибка 304 на котле аристон что делать
  • Ошибка 303 газель
  • Ошибка 304 авто
  • Ошибка 304 на котле аристон как устранить