2016-07-19 8 views
0

Ich folgte die Anweisungen auf dieser Seite ‚homepage login form DjangoHomepage Login von django

, um die Login-Formulare direkt zum Haupt Homepage der Website zu setzen, anstatt eine eigene Seite für die Anmeldung und Registrierung usw. mit ,

aber der Link oben zeigt nicht die views.py und base.html

, so habe ich keine Ahnung, wie die Formen sichtbar zu machen.

Wenn Sie gehen auf die Live-Website: http://mtode.com

es ID und Passwort Formen fehlt und auch, es wirft mir einen Fehler, wenn ich versuche, auf eine andere Form zu geben, die ein postform Inhalte, die Beiträge ist.

ist dies die views.py

def login(request): 
     username = request.POST['username'] 
     password = request.POST['password'] 
     user = authenticate(username=username, password=password) 
     if user is not None: 
      if user.is_active: 
       login(request, user) 
       redirect_url = '/' 
      else: 
       messages.error(request, "Not Successfully Created") 
     else: 
      messages.success(request, "Successfully Created") 

@login_required 
def post_list(request): 
    form = PostForm(request.POST or None) 
    if form.is_valid(): 
     instance = form.save(commit=False) 
     print (form.cleaned_data.get("title")) 
     instance.save() 
     # message success 
     messages.success(request, "Successfully Created") 
     return HttpResponseRedirect(instance.get_absolute_url()) 
    #else: 
     #messages.error(request, "Not Successfully Created") 
    queryset = Post.objects.all()#.order_by("-timestamp") 
    context = { 
     "object_list": queryset, 
     "title": "List", 
     "form": form, 
    } 
    return render(request, "post_list.html", context) 

und

urls.py

url(r'^login/$', 'django.contrib.auth.views.login', name='login'), 
url(r'^logout/$', 'django.contrib.auth.views.logout', name='logout') 

(obwohl ich habe keine Ahnung, warum ich diese Codes für das, was Nutzung setzen müssen, um nach dem Aufsetzen Die folgenden Codes zu der settings.py für die Umleitung)

settings.py

LOGIN_URL = reverse_lazy('login') 
LOGIN_REDIRECT_URL = reverse_lazy('home') 

und schließlich post_list.html

{% extends "base.html" %} 
    {% block content %} 
     {% if form.errors %} 
      <p>Your username and password didn't match. Please try again.</p> 
     {% endif %} 

     {% if next %} 
      {% if user.is_authenticated %} 
       <p>Your account doesn't have access to this page. To proceed, 
       please login with an account that has access.</p> 
      {% else %} 
      <p>Please login to see this page.</p> 
      {% endif %} 
     {% endif %} 

    <form method="post" action=""> 
    {% csrf_token %} 
    <table> 
    <tr> 
     <td>{{ form.username.label_tag }}</td> 
     <td>{{ form.username }}</td> 
    </tr> 
    <tr> 
     <td>{{ form.password.label_tag }}</td> 
     <td>{{ form.password }}</td> 
    </tr> 
    </table> 

    <input type="submit" value="login" /> 
    <input type="hidden" name="next" value="{{ next }}" /> 
    </form> 

    {# Assumes you setup the password_reset view in your URLconf #} 
    <p><a href="">Lost password?</a></p> 

    <div class='two columns right mgr'> 
     <h1>Form</h1> 
    <form method='POST' action=''>{% csrf_token %} 
    {{ form.as_p }} 
    <input class="button-primary" type='submit' value='Create Post' /> 
    </form> 
    </div> 

    <div class='four columns left'> 
     <h1>{{ title }}</h1> 

    {% for obj in object_list %} 
    <div class="row"> 
     <div> 
     <a href='{{ obj.get_absolute_url }}'> 
     <div class="thumbnail"> 
      <!--<img src="..." alt="...">!--> 
      <div class="caption"> 
      <h3>{{ obj.title }}<small> {{ obj.timestamp|timesince }} ago</small></h3> 
      <p>{{ obj.content|linebreaks|truncatechars:120 }}</p> 
      <!-- <p><a href='{{ obj.get_absolute_url }}' class="btn btn-primary" role="button">View</a> </p>--> 
      </div> 
     </div></a> 
     </div> 
     <hr /> 
    </div> 

    {% endfor %} 

    </div> 
    {% endblock content %} 

Antwort

0

Sie erste Form nicht Setup richtig ist. Eine Lösung kann sein, etwas wie htis zu tun:

<form action="/login/?next=/home/" method="post"> 
    {% csrf_token %} 
     <input type="text" placeholder="Username" name="username"> 
     <input type="password" placeholder="Password" name="password"> 
    <button type="submit">Sign in</button> 
    </form> 

Die URL in Aktion muss Ihre Login gehen und die nächste Verbindung wird die Rückkehrposition nach der Anmeldung sein.