У вас есть домашняя страница, где каждая страница с формой работает отлично.
Добавлена форма для моей стартовой страницы, и на моем локальном сервере она работает нормально.
Но когда я добавляю его на производственный сервер, он не работает.
Он говорит, что CSRF-токен отсутствует или зарегистрирован.
Но я добавил токен, и он работает со всеми остальными страницами.Значок CSRF отсутствует или некорректен на одной странице
Что мне не хватает ...?
Посмотреть
@login_required
def start(request) :
libs = Library.objects.all();
header = Header('Start');
studies = None;
source = None;
if request.method == 'POST' :
if 'Show_studie' in request.POST:
studies = Study.objects.all;
if 'Show_source' in request.POST:
source = Source.objects.all;
dctArgs = {
'library_list': libs,
'styles_dir': conf.styles_path,
'header': header.html,
'studies_list':studies,
'source_list':source,
'images_dir': conf.images_path,
};
return render_to_response('start.html', dctArgs, RequestContext(request));
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
<TITLE></TITLE>
<link rel="stylesheet" type="text/css" href="{{styles_dir}}/common.css" />
<link rel="stylesheet" type="text/css" href="{{styles_dir}}/header.css" />
<link rel="stylesheet" type="text/css" href="{{styles_dir}}/Headerstyles.css" />
</HEAD>
<BODY>
{{header|safe}}
<h1></h1>
<table id="doc_tbl" class="data" cellspacing=0>
<tr>
<th>Name</th>
<th>Documents</th>
<th>Export</th>
</tr>
{% for library in library_list %}
<tr>
<td><a href="/library_overview/{{library.id}}/">{{library.name}}</a></td>
<td>{{library.source_set.all|length}}</td>
<td><a href="/library_export/{{library.id}}/format/TS/">Andra till Jesper Export</a></td>
</tr>
{% endfor %}
</table>
<h3>Messages</h3>
{{messages}}
</br>
<form id="form1" name="form1" method="post" action="/start/" enctype="multipart/form-data">
{% csrf_token %}
<fieldset style="width:300px; margin-left:5px;">
<legend> Show all </legend>
<input type="checkbox" name="Show_studie" value="Show Studie"> Studie
<input type="checkbox" name="Show_source" value="Show Source"> Source
</br>
</br>
<input type="submit" value="Show All">
</fieldset>
{% if studies_list %}
<h3> Studies </h3>
<table class="table1">
<thead>
<tr>
<th></th>
<th scope="col1" >Name</th>
<th scope="col1" >Added by</th>
</tr>
</thead>
{% for study in studies_list %}
<tbody>
<tr>
<td>
<a href="/define_study/{{study.id}}/edit/"><img class="icon" src="{{images_dir}}/edit-icon.png"/></a>
<img onclick="javascript:return confirmDelete_name('Are you sure? The study and any associated information will be deleted.', {{study.id}}, 'delete_study');" class="icon" src="{{images_dir}}/delete-icon.png"/>
</td>
<td><a href="/define_study/{{study.id}}/">{{study.name}}</a></td>
<td>{{study.metadata_added_by_user.first_name}} {{study.metadata_added_by_user.last_name}}</td>
</tr>
{% endfor %}
</table>
{% endif %}
{% if source_list %}
<h3> Source </h3>
<table class="table1">
<thead>
<tr>
<th></th>
<th scope="col1" >Name</th>
<th scope="col1" >Added by</th>
</tr>
</thead>
{% for source in source_list %}
<tbody>
<tr>
<td>
<a href="/define_study/{{study.id}}/edit/"><img class="icon" src="{{images_dir}}/edit-icon.png"/></a>
<img onclick="javascript:return confirmDelete_name('Are you sure? The study and any associated information will be deleted.', {{study.id}}, 'delete_study');" class="icon" src="{{images_dir}}/delete-icon.png"/>
</td>
<td><a href="/define_study/{{study.id}}/">{{source.name}}</a></td>
<td>{{source.metadata_added_by_user.first_name}} {{source.metadata_added_by_user.last_name}}</td>
</tr>
{% endfor %}
{% endif %}
</tbody>
</table>
</form>
</BODY>
</HTML>
Forbidden (403) CSRF проверка не удалась. Запрос прерван. Справка Причина отказа: Тождество CSRF отсутствует или неверно.
В общем, это может произойти, если имеется подлинная подделка запроса на кросс-сайт или когда
от Dango не используется правильно. Для форм POST вам необходимо обеспечить:
• Функция просмотра использует RequestContext для шаблона вместо контекста.
• В шаблоне внутри каждой формы POST есть тег шаблона {% csrf_token%}, который предназначен для внутреннего URL-адреса.
• Если вы не используете CsrfViewMiddleware, вы должны использовать csrf_protect для любых видов
, которые используют тег шаблона csrf_token, а также те, которые принимают данные POST. Вы видите раздел справки этой страницы, потому что у вас DEBUG = True в файле настроек Django. Измените это на False, и отобразится только начальное сообщение об ошибке.
Вы можете настроить эту страницу с помощью параметра CSRF_FAILURE_VIEW.
Настройки
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
На странице, которая работает, я получаю сообщение:
<django.contrib.messages.storage.fallback.FallbackStorage object at 0x03B7A270>
Покажите нам некоторые подробности! – Rohan
Мы не можем вам помочь, если не видим код, который вы используете. Поэтому обновите вопрос с помощью 'view.py' и вашего шаблона, который вызывает проблему. –
Идентификатор CRSF работает с файлами cookie и HTTP-заголовками. Вы изменили веб-браузер? Можем ли мы получить некоторую информацию о ваших политиках cookie сервера и браузера и о том, как вы добавили токен CSRF? – Ricola3D