Django在首页上的注册表,没有重定向到登录页面

时间:2015-07-13 10:40:27

标签: python html django forms login

我是Django的新手,但至少拥有Python的基础知识。今年夏天,我正在开发一个webapp,它将与fortran代码协同工作(希望如此)。此fortran代码生成数据,并且与注册系统一起,用户应该可以访问此fortran代码创建的数据的数据库。

到目前为止,我有一个主页的通用模板,现在我正在尝试为主页实现注册按钮和登录表单。从首页开始,我希望用户能够按下注册按钮,重定向到一个表格,要求提供一些基本信息,如姓名,电子邮件等。然后他们会收到一封确认电子邮件,点击一个链接,帐户应该是活性。 在它旁边,登录按钮应该包含用户名(电子邮件)和密码的字段。如果用户名/密码错误,则应添加错误的用户名/密码但不会重定向到任何其他页面的文本。

目前我只在登录部分工作。我遇到的问题是页面只显示登录按钮而不是填写用户名和密码的字段。

以下是我的base.html

的设置
<div class="page-header">
{% if not user.is_authenticated %}
  <h1>Hello and welcome to my code!</h1>
  <div class="right">
     {% if form.errors %}
        <p>Your username and password didn't match. Please try again.</p>
     {% endif %}

     <form>
     {% 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}}"/>

   

关于注册过程和用户​​处理,Django 1.8+首选哪个应用程序?我听说django-registration不再更新了,django-registration-redux因为错误而无法上班:

  

django.core.exceptions.AppRegistryNotReady:模型尚未加载。

我无法使用通常建议的解决方案进行修复。 Allauth我试图潜入,但我想也许我可以从这里的建议找到更好的选择。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

urls.py

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^register/$', views.Register, name='register'),

    url(r'^login/$', views.Login, name='login'),
    url(r'^logout/$', views.Logout, name='logout'),
]

register.html&lt; - 注册表单

<form method="post" action="">
    {% csrf_token %}

    <input type="text" name="username" placeholder="Username"/>
    <input type="text" name="first_name" placeholder="First Name"/>
    <input type="text" name="last_name" placeholder="Last Name"/>
    <input type="text" name="email" placeholder="Email Address"/>
    <input type="password" name="password" placeholder="Password"/>

    <input type="submit" value="Register"/>
</form>

login.html&lt; - 登录表单

<form method="post" action="">
    {% csrf_token %}

    <input type="text" name="username" placeholder="Username"/>
    <input type="password" name="password" placeholder="Password"/>

    <input type="submit" value="Login"/>
</form>

views.py

def Register(request):
    if request.method == "POST":
        username = request.POST['username']
        fname = request.POST['first_name']
        lname = request.POST['last_name']
        email = request.POST['email']
            password = request.POST['password']

            u = User.objects.create_user(username, email, password, first_name=fname, last_name=lname)
            u.save()

            return HttpResponse("Registration complete! Please head over to the <a href='/login/'>login page</a> to start using your website.")

        return render(request, "app/register.html", {})

def Login(request):
    if request.method == "POST":
        mobile = request.POST['username']
        password = request.POST['password']

        user = authenticate(username=username, password=password)
        if user is not None:
            if user.is_authenticated:
                login(request, user)
                return HttpResponseRedirect('/home/')
            else:
                return HttpResponse("This user is not active. Please contact support@company.com")
        else:
            return HttpResponseRedirect('/login/')
    return render(request, "app/login.html", {})

def Logout(request):
    logout(request)
    return HttpResponseRedirect('/login/')

我的所有模板(html文件)都在我的app文件夹中。出于此答案的目的,我们假设该应用程序名为app。因此,文件夹结构为app/templates/app/,然后是模板文件register.htmllogin.html。这是我工作的项目的精简版本。希望这可以帮助。我已经从Mike Hibbert的YouTube频道学习了这种注册和登录方法。搜索并观看他的视频。

P.S。如果您可以登录工作,它将带您到localhost:8000 / home /但我还没有在这里提供网址或视图。自己做一个。