2016-08-18 81 views
0

我是django前端网站开发的全新品牌。django意见 - 超链接缩略图

我在我的模板文件夹中有一个index.html,它有两个缩略图用于注册或登录,点击它们可指导您到signup.htmllogin.html。我在urls.py中包含了相应的网址。我被困在如何编辑我的views.py,以便我可以记录用户执行导演所需的选项。我在HTML代码中使用了超链接和缩略图。

目前我views.py看起来是这样的:

from django.shortcuts import render 
from .models import Customer 

# Create your views here. 
def index(request): 
    return render(request, 'newuser/index.html', {}) 

def login(request): 
    return render(request, 'newuser/login.html', {}) 

def signup(request): 
    return render(request, 'newuser/signup.html', {})` 

而且urls.py

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.index, name = 'index'), 
    url(r'^login$', views.login, name = 'login'), 
    url(r'^signup$', views.signup, name = 'signup'), 
] 

最后,这是我的index.html

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title> Zucumber </title> 
    <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/bootstrap-theme.min.css"> 
    <link href="https://fonts.googleapis.com/css?family=PT+Sans" rel="stylesheet"> 
    <link rel = "stylesheet" href = "{% static 'css/newuser.css' %}"> 
</head> 
<body> 
    <div class = "page-header"> 
     <h1> Welcome to My Site </h1> 
    </div> 
    <style> 
     .container { 
      margin-left: 300px; 
      margin-right: 300px; 
     } 
    </style> 
    <div class = "container"> 
     <div class="row"> 
      <div class="col-xs-6 col-md-3"> 
       <a href="signup" class="thumbnail"> 
       <img src="/static/img/signup.jpg" alt = "Sign Up as New User"> 
       </a> 
       <h3> Sign Up </h3> 
      </div> 
      <div class="col-xs-6 col-md-3"> 
       <a href="login" class="thumbnail"> 
       <img src="/static/img/login.jpg" alt = "Log In as Existing User"> 
       </a> 
       <h3> Log In </h3> 
      </div> 
     </div> 
    </div> 
</body> 
</html> 
+0

这并不完全清楚你在问什么。当用户点击注册时,他们将进入注册视图,登录也一样。你的问题到底是什么? –

+0

@DanielRoseman,一旦他们在注册视图,我想收集表单数据,如果我编辑相应的视图,页面将不会显示。如何编辑索引视图,以便我可以使用if-else来呈现注册和登录? –

+0

那么你是想获得用户放入字段的信息,然后用这些数据做些什么?或者你是否试图让用户重定向到index.html中的某个视图? –

回答

0

请避免在Django中使用硬编码的网址。您可以在这里使用反向链接匹配的功能。既然你已经有了名字分配给您的网址,你可以在你index.html这样有container

<div class = "container"> 
    <div class="row"> 
     <div class="col-xs-6 col-md-3"> 
      <a href="{% url 'signup' %}" class="thumbnail"> 
      <img src="/static/img/signup.jpg" alt = "Sign Up as New User"> 
      </a> 
      <h3> Sign Up </h3> 
     </div> 
     <div class="col-xs-6 col-md-3"> 
      <a href="{% url 'login' %}" class="thumbnail"> 
      <img src="/static/img/login.jpg" alt = "Log In as Existing User"> 
      </a> 
      <h3> Log In </h3> 
     </div> 
    </div> 
</div> 

这将使用您的urls.py重定向到相应的URL帮助。

接下来,您需要创建一个forms以显示在signuplogin页面上。由于您从模型中导入了Customer,因此我假设您要为它们创建signuplogin

所以,你可以把你的forms.py

from django.contrib.auth.forms import AuthenticationForm, UserCreationForm 
from django import forms 

from .models import Customer 

class LoginForm(AuthenticationForm): 
    username = forms.CharField(label="Username", max_length=30, 
           widget=forms.TextInput(attrs={'class': 'form-control', 'name': 'username'})) 
    password = forms.CharField(label="Password", max_length=30, 
       widget=forms.PasswordInput(attrs={'class': 'form-control', 'name': 'password'})) 


class SignUpForm(UserCreationForm): 
    class Meta: 
     model = Customer 

SignUpForm你也可以指定你的用户希望同时通过提供fields作为Customer模型的属性列表注册的字段。

在你login.html您可以为LoginForm提供一个空间来呈现,如:

<form action="{% url 'login' %}" method="POST"> 
    {% csrf_token %} 
    {% for field in form %} 
    <b>{{ field.label }}</b>: 
    {{ field }}<br> 
    {{ field.errors }} 
    {% endfor %} 
    <input type="submit" value="Sumbit"> 
</form> 

同样的signup.html也将提供形式是这样的:

<form action="{% url 'signup' %}" method="POST"> 
    {% csrf_token %} 
    {% for field in form %} 
    <b>{{ field.label }}</b>: 
    {{ field }}<br> 
    {{ field.errors }}<br> 
    {% endfor %} 
    <input type="submit" value="Sumbit"> 
</form> 

最后编辑loginsignup意见存储这样的数据:

from django.http import HttpResponse, HttpResponseRedirect 
from django.shortcuts import render 
from django.contrib.auth import authenticate, login, logout 

from .forms import LoginForm, SignUpForm 

def login(request): 
    if request.method == 'POST': 
     username = request.POST['username'] 
     password = request.POST['password'] 
     user = authenticate(username=username, password=password) 
     if user is not None: 
      login(request, user) 
      return HttpResponse("Logged in", status=200) 
     else: 
      form = LoginForm(request.POST) 
      context = {'form': form} 
      return render(request, 'login.html', context=context, status=401) 
    if request.method == 'GET': 
     form = LoginForm(None) 
     context = {'form': form} 
     return render(request, 'login.html', context=context) 


def signup(request): 
    if request.method == 'POST': 
     form = SignUpForm(request.POST) 
     if form.is_valid(): 
      form.save() 
     else: 
      context = {'form': form} 
      return render(request, 'signup.html', context=context) 
     return HttpResponse("Registered Successfully", status=200) 

    if request.method == 'GET': 
     form = SignUpForm(None) 
     context = {'form': form} 
     return render(request, 'signup.html', context=context) 

请注意,我使用登录和登出功能django.contrib.auth。这可能不是您想要的应用程序。但这个想法非常相似。 我希望这可以帮助。

1

我不知道如果我请遵循你所要求的,但如果它只是指导t他用户的URL,那么你应该使用url模板标签像这样的东西

<a href="{% url 'signup' %}" class="thumbnail"> 
    <img src="/static/img/signup.jpg" alt = "Sign Up as New User"> 
</a> 

<a href="{% url 'login' %}" class="thumbnail"> 
    <img src="/static/img/login.jpg" alt = "Log In as Existing User"> 
</a> 

因为你评为urls.py的网址,你可以按名称在URL模板标签中引用它们,它会找出完整的网址。

例如

为您使用以下

<a href="{% url 'login' %}" class="thumbnail">click here</a> 

将导致它呈现的URL http://yoursite.com/login

如果你实际上是在寻找记录命名为一个登录

url(r'^login$', views.login, name = 'login'), 

点击用户使其稍微涉及一些,你可能想要设置一些模型来保存数据,然后在视图中捕获点击mehow