2016-08-18 80 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