django - Django 表单 - 提交数据不起作用
问题描述
我对 Django 很陌生,我想自学做一个简单的笔记。但我不明白 django 表单是如何工作的。当我可以显示用户的笔记时,我制作了简单的模板,现在我正在尝试制作一个视图,当用户可以使用简单的表单向帐户添加新笔记时。
这是我的views.py文件
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login, logout
from .forms import CreateUserForm, CreateNoteForm
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from .models import *
# Create your views here.
def loginPage(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('home')
else:
messages.info(request, 'Username or pasword is incorrect')
context = {}
return render(request, 'accounts/login.html', context)
def registerPage(request):
form = CreateUserForm()
if request.method == 'POST':
form = CreateUserForm(request.POST)
if form.is_valid():
form.save()
user = form.cleaned_data.get('username')
messages.success(request, 'Account was created for '+ user)
return redirect('home')
context = {'form': form}
return render(request, 'accounts/register.html', context)
def logoutUser(request):
logout(request)
return redirect('login')
@login_required(login_url='login')
def home(request):
if request.user.is_authenticated:
username = request.POST.get('username')
context = {'username': username}
return render(request, 'accounts/home.html', context)
def notes(request):
username = None
if request.user.is_authenticated:
username = request.user.username
user_id = request.user.pk
user_notes = Note.objects.filter(user=user_id)
context = {
'user_notes': user_notes,
'username': username,
#'user_id' : user_id,
}
return render(request, 'accounts/notes.html', context)
def createNote(request):
username = request.user.username
user_id = request.user.pk
user_notes = Note.objects.filter(user=user_id)
form = CreateNoteForm()
if request.method == 'POST':
form = CreateNoteForm(request.POST)
if form.is_valid():
form.save()
return redirect('notes')
context = {'user_notes': user_notes, 'form': form}
return render(request, 'accounts/create_note.html', context)
表格.py:
from django.forms import ModelForm
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from .models import Note
class CreateUserForm(UserCreationForm):
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
class CreateNoteForm(forms.ModelForm):
class Meta:
model = Note
fields = ['user', 'title', 'text']
和 create_note.html:
{% extends 'accounts/main.html' %}
{% load static %}
{% block content %}
<br>
<br>
<div class="container">
<div class="card text-white bg-dark mb-3">
<div class="container">
<form action="{% url 'notes' %}" method="POST">
<div class="card-body">
{% csrf_token %}
{{form}}
<input type="Submit" name="Submit">
</div>
</form>
</div>
</div>
</div>
{% endblock %}
问题是我提交数据时没有添加新注释。此外,如果有人对构建我的观点或改进这个应用程序有其他建议,我很高兴阅读它们并学习改进我的项目的新方法。对不起,长篇大论。我真的是菜鸟。
解决方案
推荐阅读
- java - 是否可以在 JSP 的类标签中使用数据库中的某些内容?
- java - XYChart.Data getNode() 为空
- javascript - 使用 JavaScript 隐藏网格项
- bash - 如何在bash中的heredoc之后使用控制运算符
- regex - 正则表达式使用特殊字符对 URL 进行编码
- python - 嵌套字典的迭代器类
- pandas - 熊猫数据框转换为表格
- c++ - OpenCV TermCriteria CV_TERMCRIT_EPS 和 TermCriteria::EPS 的区别
- reactjs - 使用 Rendertron 渲染时样式组件的产品版本问题
- amazon-ec2 - 带有 XMP 元数据的 PNG 被服务器阻止