我是一名初级网络开发者,正在尝试建立一个论坛/社交媒体网站。我正在松散地关注YouTube教程系列(thenewboston),作者在该系列中创建了一个点对点音乐共享网站。
我用用户注册表打了一堵砖墙。我跟着他是怎么做到的,但我一定是错过了什么。当我在主页/注册表/之后键入快捷方式时,它会重定向到页面,但在任何地方都没有用户注册表单。这让我觉得问题不在于urls.py.以下是所有相关文件。
views.py
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from django.views import generic
from django.views.generic.edit import CreateView
from django.views.generic import View
from .forms import UserForm
def index(request):
return render(request, 'personal/home.html')
class UserFormView(View):
form_class = UserForm
template_name = 'personal/registration_form.html'
#display blank form
def get(self, request):
form = self.form_class(None)
return render(request, self.template_name, {'form': form})
# process form data
def post(self, request):
form = self.form_class(request.POST)
if form.is_valid():
user = form.save(commit=False)
#cleaned (normalized) data
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user.set_password(password)
user.save()
#returns User objects if credentials are correct
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return redirect('personal:index')
return render(request, self.template_name, {'form':form})
registration_form.html
{% extends 'personal/header.html' %}
{% block body %}
<div class="container-fluid">
<div class="row">
<div class="col-sm-12 col-md-7">
<div class="panel panel-default">
<div class="panel-body">
<form class="form-horizontal" action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
{% include 'personal/form-template.html' %}
<div class="form-group"></div>
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-success">Submit</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
形状template.html
{% for field in form %}
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<span class="text-danger small">{{field.errors }}</span>
</div>
<label class="control-label col-sm-2">{{ field.label_tag }}</label>
<div class="col-sm-10">{{ field }}</div>
</div>
{% endfor %}
<强烈> header.html中
<!DOCTYPE html>
<html lang="en">
{% load staticfiles %}
<link rel="stylesheet" href="https"//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<link href="https://fonts/googleapis.com/css?family=Satisfy' rel="stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="{% static 'personal/css/style.css' %}"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js:></script>
<script src="http://maxcdn.bootstrapcdn.com/boostrap/3.3.6/js/bootstrap.min.js"></script>
<head>
<title>rheto</title>
<meta charset="utf-8" />
{% load staticfiles %}
<link rel="stylesheet" href="{% static 'personal/css/bootstrap.min.css' %}" type = "text/css"/>
<meta name="viewport" content = "width=device-width, initial-scale=1.0">
<style type="text/css">
html,
body {
height:100%
}
</style>
</head>
<nav class="navbar navbar-inverse">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#topNavBar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">rheto</a>
</div>
<div class="collapse navbar-collapse" id="topNavBar">
<ul class="nav navbar-nav">
<li class="">
<a href="/blog/">
<span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span><strong>Debate</strong>
<span class="glyphicon glyphicon-thumbs-down" aria-hidden="true"></span>
</a>
</li>
</ul>
<form class="navbar-form navbar-left" role="search" method="get" action="#">
<div class="form-group">
<input type="text" class="form-control" name="q" value="">
</div>
<button type="submit" class="btn btn-default">Search</button>
</form>
<ul class="nav navbar-nav navbar-right">
<li class="">
<a href="/register/">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span> <strong>Sign Up</strong>
</a>
</li>
<li class="">
<a href="#">
<span class="glyphicon glyphicon-off" aria-hidden="true"></span> <strong>Logout</strong>
</a>
</li>
</ul>
</div>
</div>
</nav>
<body class="body" style="background-color:#F0FFFF">
<div class="container-fluid" style="min-height:95%; ">
<div class="row">
<div class="col-sm-2">
<br>
<br>
<!-- Great, til you resize. -->
<!--<div class="well bs-sidebar affix" id="sidebar" style="background-color:#fff">-->
<div class='container-fluid'>
<br><br>
{% block content %}
{% endblock %}
</div>
</div>
</div>
</div>
<footer>
<div class="container-fluid" style='margin-left:15px'>
<p>Created by Morty Suckerburdsen</p>
</div>
</footer>
</body>
</html>
个人/ urls.py
from django.conf.urls import url, include
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^register/$', views.UserFormView.as_view(), name='register'),
url(r'^contact/$', views.contact, name='contact'),]
网站/ urls.py
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('personal.urls')),
url(r'^blog/', include('blog.urls')),
]