簡體   English   中英

Django 1.9-/ login /中的IOError

[英]Django 1.9 - IOError at /login/

抱歉,如果我較早前問過這個問題,您是否想幫助我。 由於我認為問題寫得不好,不得不刪除該帖子。

所以我有一個登錄視圖,當我單擊“提交”時會引發錯誤:

Exception Type: IOError
Exception Value:    
[Errno 22] Invalid argument:  u"C:\\Users\\Me\\Desktop\\mysite\\templates\\{'user': <CustomUser: coco>}"



Traceback:
C:\Users\Me\Desktop\mysite\accounts\views.py in login
40. return render('all_posts.html', {'user': request.user}, context_instance=RequestContext(request)) 

最初,我的登錄視圖為:

返回HttpResponseRedirect('/')

而不是當前:

return render('all_posts.html', {'user': request.user}, context_instance=RequestContext(request))

和前一種方法一樣,因為它沒有引發任何錯誤,卻將我定向到正確的網址。 但是在我的模板中; {%如果request.user.is_authenticated%}無效。

所以我更改了它,希望讓我的模板顯示當前用戶的名字(Welcome,coco!) ,現在我得到了這個新錯誤。

這是我的views.py

def login(request):
    """
    Log in view
    """
    if request.method == 'POST':
        form = AuthenticationForm(data=request.POST)
        if form.is_valid():
            user = authenticate(username=request.POST['username'], password=request.POST['password'])
            if user is not None:
                if user.is_active:
                    django_login(request, user)
                    return render('all_posts.html', {'user': request.user}, context_instance=RequestContext(request))
    else:
        form = AuthenticationForm()
    return render_to_response('login.html', {
        'authenticationform': form,
    }, context_instance=RequestContext(request))

base.html

<div class="log_bar">
<ul>
    {% if request.user.is_authenticated %}
        <li>Welcome,</li>
        <li><a href="{% url 'profile' %}">{{ user.username }}</a></li>
        <li>|</li>
        <li><a href="{% url 'logout' %}">Log Out</a></li>
    {% else %}
        <li>Please</li>
        <li><a data-toggle="modal" data-target="#modal-login" href="">log in</a></li>
        <li>or</li>
        <li><a data-toggle="modal" data-target="#modal-register" href="">sign up</a></li>
    {% endif %}
</ul>
</div><!-- /.log_bar -->

編輯1:登錄模板 login.html

{% load staticfiles %}
{% load crispy_forms_tags %}

<div class="modal" id="modal-login">
            <div class="modal-dialog">
                <div class="modal-content">
                    <form enctype="multipart/form-data" method="post" action="login/">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal">&times;</button>
                            <h3 class="modal-title">Log In</h3>
                        </div>
                        <div class="modal-body">
                            {% csrf_token %}
                            {{ authenticationform|crispy }}
                        </div>
                        <div class="modal-footer">
                            <input type='submit' class="btn btn-primary" value="Log In" />
                        </div>
                    </form>
                </div>
            </div>
</div>

編輯2:all_posts.html

all_posts現在為空。 基本上,它只是擴展了base.html。 我都會發布。

all_posts.html

{% extends "base.html" %}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>

編輯3:urls.py

from django.conf.urls import url, include
from blog import views
from accounts.views import get_profile, login, logout, register
import accounts


urlpatterns = [
    url(r'^textpost$', views.submit_textpost, name='textpost'),
    url(r'^linkpost$', views.submit_linkpost, name='linkpost'),
    url(r'^$', views.all_posts, name='all_posts'),
    url(r'^all$', views.all_posts, name='all_posts'),
    url(r'^new$', views.new_posts, name='new_posts'),
    url(r'^all/top_hour$', views.top_posts_hour, name='top_hour'),
    url(r'^all/top_day$', views.top_posts_day, name='top_day'),
    url(r'^all/top_week$', views.top_posts_week, name='top_week'),
    url(r'^all/top_month$', views.top_posts_month, name='top_month'),
    url(r'^all/top_year$', views.top_posts_year, name='top_year'),
    url(r'^all/top_beginning_of_time$', views.top_posts_all, name='top_beginning_of_time'),
    url(r'u/(?P<username>[a-zA-Z0-9]+)$', accounts.views.get_profile, name='username'),
    url(r'register$', register, name='register'),
    url(r'^profile/(?P<username>\w+/$)', get_profile, name='profile'),
    url(r'logout/$', logout, name='logout'),
    url(r'^login/$', login, name='login'),
    url(r'(?P<username>[a-zA-Z0-9]+)/$', views.get_sub, name='sub_url'),
    url(r'(?P<username>[a-zA-Z0-9]+)/(?P<title_slug>[a-zA-Z0-9]+)/$',  views.get_sub, views.title_slug, name='sub_post'),
    url(r'^comments/', include('django_comments_xtd.urls')),
]

base.html完整

旁注*在我的nav class =“ navbar navbar-fixed-left navbar-static-top”中 ,請注意所有href都是空的,這是因為如果我嘗試填充{%url'new_posts'%}等。它將引發相同的回溯:
“功能”對象不可迭代 我不知道是否相關,但我想我應該提一下。 我現在什至不關心自己,我不想超越自己。 我現在正試圖學習如何進行正確的登錄。

{% load staticfiles %}
{% load crispy_forms_tags %}

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
   <HEAD>
       <link rel="stylesheet"     href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
       <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
       <link rel="stylesheet" href="{% static 'css/base.css' %}">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
      <TITLE>{% block title %}{% endblock %}</TITLE>

</HEAD>

   <BODY>
   {% block content %}
       {% block navigation %}
   <div class="navbar-wrapper">
   <div class="post_button" style="width:58px; margin:0 auto;">
   <a href="#" class="btn btn-custom blue">Submit a Post</a>
   </div> <!-- /.post_button-->
   <div class="log_bar">
    <ul>
        {% if user.is_authenticated %}
            <li>Welcome,</li>
            <li><a href="{% url 'profile' %}">{{ user.username }}</a></li>
            <li>|</li>
            <li><a href="{% url 'logout' %}">Log Out</a></li>
        {% else %}
            <li>Please</li>
            <li><a data-toggle="modal" data-target="#modal-login" href="">log in</a></li>
            <li>or</li>
            <li><a data-toggle="modal" data-target="#modal-register" href="">sign up</a></li>
        {% endif %}
    </ul>
    </div><!-- /.log_bar -->
<nav class="navbar navbar-fixed-left navbar-static-top">
  <div class="container-fluid">
    <!-- Collect the nav links, forms, and other content for toggling -->
      <ul class="nav navbar-nav ">
        <li class="active"><a href="/">Home <span class="sr-only">(current)</span></a></li>
        <li><a href="">All</a></li>
        <li><a href="">New</a></li
        <li class="dropdown">
          <a href="" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Top<span class="caret"></span></a>
          <ul class="dropdown-menu">
          <li><a href="">hour</a></li>
          <li><a href="">24 hrs</a></li>
          <li><a href="">week</a></li>
          <li><a href="">month</a></li>
          <li><a href="">year</a></li>
          <li><a href="">beginning of time</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="">Custom Search</a></li>
          </ul>
        </li>
      </ul>
  </div><!-- /.container-fluid -->
</nav>
<div id="side_bar">
     <form class="navbar-form navbar-static-top navbar-right" role="search" id="navBarSearchForm">
                <div class="input-group">
                    <input type="text" class="form-control" placeholder="Search">
                    <span class="input-group-btn">
                        <button type="submit" class="btn btn-default" id="search_btn">
                        <span class="glyphicon glyphicon-search"></span>
                        </button>
                    </span>
            </div>
            </form>
    </div><!-- /.side-bar -->
    <button class="btn-block" id='hideshow' value='hide/show' style="display: block; height: 100%;"></button>

    {% include 'register.html' %}
    {% include 'login.html' %}

    {% endblock %}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js">    </script>
    <script  src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"> </script>
    <script type="text/javascript" src="{{ STATIC_URL }} /static/jquery.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }} /static/jquery.leanModal.js"></script>

{% endblock %}
   </BODY>
</HTML>

render的第一個參數必須是request object ,第二個模板名稱和第三個上下文。

return render(request, 'all_posts.html', {'user': request.user})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM