我已经发布了这个错误,但是我找不到答案,现在我正在重新发布我的代码的更多细节
我是编码领域的新手。 我决定与Django&;Python,但由于一些错误,我被卡住了。在过去的3周里,我试图找出问题所在,但没有找到。 请帮我找出问题所在
我有三个问题:
1-欢迎页面
2-登录&;注册(注册)
三座位部分
1.欢迎页面
欢迎页面是第一页。
这是任何用户访问网站时看到的第一个页面,如果他想进入第二个页面,也必须登录该页面。
问题1:\每当我访问网站时,我都不会看到第一页的内容,这是欢迎页面。
它将带我直接到第二页,甚至没有登录
2-登录&;注册(注册):
在进入第二个网页之前,用户必须登录。如果他不能登录,他必须注册。
注册后,他将被重定向到登录页面。
问题2:\当我尝试登录时,收到消息说找不到页面
3-搜索部分:
进入第二页后,我们有一个搜索栏,每当用户想要搜索产品时,他只需键入产品名称并返回他要搜索的产品列表,以防数据库中有许多产品。
问题3:\当我在搜索栏中键入产品名称时,它会显示产品的任何列表
提前谢谢
问题2:登录错误
**Page not found** (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/login
Using the URLconf defined in grouppublishingindia.urls, Django tried these URL patterns, in this order:
admin/
register_request [name='register_request']
login_request [name='login_request']
logout_request [name='logout_request']
SearchResultsView [name='search_results']
^$ [name='index']
^WelcomePage/$ [name='welcomepage']
^display_Rocky_Railway$ [name='display_Rocky_Railway']
^display_Roar$ [name='display_Roar']
^display_Shipwreched$ [name='display_Shipwreched']
^display_FWN1$ [name='display_FWN1']
^display_FWN2$ [name='display_FWN2']
^display_FWN3$ [name='display_FWN3']
^display_LIFE_OF_JESUS$ [name='display_LIFE_OF_JESUS']
^display_Friends_with_God_Bible_Story$ [name='display_Friends_with_God_Bible_Story']
^add_Rocky_Railway$ [name='add_Rocky_Railway']
^add_Roar$ [name='add_Roar']
^add_Shipwreched$ [name='add_Shipwreched']
^add_FWN1$ [name='add_FWN1']
^add_FWN2$ [name='add_FWN2']
^add_FWN3$ [name='add_FWN3']
^add_LIFE_OF_JESUS$ [name='add_LIFE_OF_JESUS']
^add_Friends_with_God_Bible_Story$ [name='add_Friends_with_God_Bible_Story']
^edit_Rocky_Railway/(?P<pk>\d+)$ [name='edit_Rocky_Railway']
^edit_Roar/(?P<pk>\d+)$ [name='edit_Roar']
^edit_Shipwreched/(?P<pk>\d+)$ [name='edit_Shipwreched']
^edit_FWN1/(?P<pk>\d+)$ [name='edit_FWN1']
^edit_FWN2/(?P<pk>\d+)$ [name='edit_FWN2']
^edit_FWN3/(?P<pk>\d+)$ [name='edit_FWN3']
^edit_LIFE_OF_JESUS/(?P<pk>\d+)$ [name='edit_LIFE_OF_JESUS']
^edit_Friends_with_God_Bible_Story/(?P<pk>\d+)$ [name='edit_Friends_with_God_Bible_Story']
^delete_Rocky_Railway/(?P<pk>\d+)$ [name='delete_Rocky_Railway']
^delete_Roar/(?P<pk>\d+)$ [name='delete_Roar']
^delete_Shipwreched/(?P<pk>\d+)$ [name='delete_Shipwreched']
^delete_FWN1/(?P<pk>\d+)$ [name='delete_FWN1']
^delete_FWN2/(?P<pk>\d+)$ [name='delete_FWN2']
^delete_FWN3/(?P<pk>\d+)$ [name='delete_FWN3']
^delete_LIFE_OF_JESUS/(?P<pk>\d+)$ [name='delete_LIFE_OF_JESUS']
^delete_Friends_with_God_Bible_Story/(?P<pk>\d+)$ [name='delete_Friends_with_God_Bible_Story']
^Inventory/
The current path, login, didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
问题1及;上面描述了3个步骤
这是我的欢迎页内容页
{% extends "base.html" %}
{% load static %}
{% block content %}
<h1>Welcome To GROUP INDIA INVENTORY</h1>
{% endblock %}
My URLs from the Project(grouppublishingindia):
from django.urls import path, include
from django.conf.urls import url
from django.contrib import admin
from django.conf import settings
from Inventory import views
urlpatterns = [
path('admin/', admin.site.urls),
path("",include("Inventory.urls")),
url(r"^Inventory/",include('django.contrib.auth.urls'))
]
应用程序中的我的URL(清单):
from django.contrib.auth import views as auth_views
from django.urls import reverse
from django.conf.urls import url
from .views import *
from Inventory import views
from .views import index
from Inventory.views import SearchResultsView
from django.urls import path
app_name = "Inventory"
urlpatterns =[
path("register_request", views.register_request, name="register_request"),
path("login_request", views.login_request, name="login_request"),
path("logout_request", views.logout_request, name= "logout_request"),
path('SearchResultsView', SearchResultsView.as_view(), name='search_results'),
#url(r'Login/$', auth_views.LoginView.as_view(template_name="templates/registration/login.html"),name="login"),
#url(r'Logout/$', auth_views.LogoutView.as_view(),name="logout"),
#url(r'SignUp/$', views.SignUp.as_view(template_name = "templates/registration/signup.html"),name="signup"),
url(r"^$", index, name="index"),
url(r'^WelcomePage/$', WelcomePage.as_view(template_name = "Welcome_Page.html"), name="welcomepage"),
url(r"^display_Rocky_Railway$", display_Rocky_Railway, name='display_Rocky_Railway'),
url(r"^display_Roar$", display_Roar, name='display_Roar'),
url(r"^display_Shipwreched$", display_Shipwreched, name='display_Shipwreched'),
url(r"^display_FWN1$", display_FWN1, name='display_FWN1'),
url(r"^display_FWN2$", display_FWN2, name='display_FWN2'),
url(r"^display_FWN3$", display_FWN3, name='display_FWN3'),
url(r"^display_LIFE_OF_JESUS$", display_LIFE_OF_JESUS, name='display_LIFE_OF_JESUS'),
url(r"^display_Friends_with_God_Bible_Story$", display_Friends_with_God_Bible_Story, name='display_Friends_with_God_Bible_Story'),
url(r"^add_Rocky_Railway$", add_Rocky_Railway, name='add_Rocky_Railway'),
url(r"^add_Roar$", add_Roar, name='add_Roar'),
url(r"^add_Shipwreched$", add_Shipwreched, name='add_Shipwreched'),
url(r"^add_FWN1$", add_FWN1, name='add_FWN1'),
url(r"^add_FWN2$", add_FWN2, name='add_FWN2'),
url(r"^add_FWN3$", add_FWN3, name='add_FWN3'),
url(r"^add_LIFE_OF_JESUS$", add_LIFE_OF_JESUS, name='add_LIFE_OF_JESUS'),
url(r"^add_Friends_with_God_Bible_Story$", add_Friends_with_God_Bible_Story, name='add_Friends_with_God_Bible_Story'),
url(r"^edit_Rocky_Railway/(?P<pk>\d+)$", edit_Rocky_Railway, name='edit_Rocky_Railway'),
url(r"^edit_Roar/(?P<pk>\d+)$", edit_Roar, name='edit_Roar'),
url(r"^edit_Shipwreched/(?P<pk>\d+)$", edit_Shipwreched, name='edit_Shipwreched'),
url(r"^edit_FWN1/(?P<pk>\d+)$", edit_FWN1, name='edit_FWN1'),
url(r"^edit_FWN2/(?P<pk>\d+)$", edit_FWN2, name='edit_FWN2'),
url(r"^edit_FWN3/(?P<pk>\d+)$", edit_FWN3, name='edit_FWN3'),
url(r"^edit_LIFE_OF_JESUS/(?P<pk>\d+)$", edit_LIFE_OF_JESUS, name='edit_LIFE_OF_JESUS'),
url(r"^edit_Friends_with_God_Bible_Story/(?P<pk>\d+)$", edit_Friends_with_God_Bible_Story, name='edit_Friends_with_God_Bible_Story'),
url(r"^delete_Rocky_Railway/(?P<pk>\d+)$", delete_Rocky_Railway, name='delete_Rocky_Railway'),
url(r"^delete_Roar/(?P<pk>\d+)$", delete_Roar, name='delete_Roar'),
url(r"^delete_Shipwreched/(?P<pk>\d+)$", delete_Shipwreched, name='delete_Shipwreched'),
url(r"^delete_FWN1/(?P<pk>\d+)$", delete_FWN1, name='delete_FWN1'),
url(r"^delete_FWN2/(?P<pk>\d+)$", delete_FWN2, name='delete_FWN2'),
url(r"^delete_FWN3/(?P<pk>\d+)$", delete_FWN3, name='delete_FWN3'),
url(r"^delete_LIFE_OF_JESUS/(?P<pk>\d+)$", delete_LIFE_OF_JESUS, name='delete_LIFE_OF_JESUS'),
url(r"^delete_Friends_with_God_Bible_Story/(?P<pk>\d+)$", delete_Friends_with_God_Bible_Story, name='delete_Friends_with_God_Bible_Story'),
]
我的欢迎页面、搜索页面、登录页面和注册页面的调用位置(Views.py):
from django.contrib.auth.decorators import login_required
from django.contrib.auth import login, authenticate
from django.http import HttpResponseRedirect
from django.views.generic import TemplateView
from django.contrib.auth import login, logout
from django.urls import reverse_lazy
from django.views.generic import CreateView
from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import render, redirect, get_object_or_404
from .models import *
from .forms import *
from Inventory import forms
from django.db.models import Q
from django.views.generic import TemplateView, ListView
from .forms import NewUserForm
from django.contrib import messages
from django.contrib.auth.forms import AuthenticationForm
#Index
def index(request):
return render(request,'index.html')
#Register(signup)
def register_request(request):
if request.method == "POST":
form = NewUserForm(request.POST)
if form.is_valid():
user = form.save()
login(request, user)
messages.success(request, "Registration successful." )
return redirect("index")
messages.error(request, "Unsuccessful registration. Invalid information.")
form = NewUserForm
return render (request=request, template_name="register_request.html", context=
{"register_form":form})
#Login
def login_request(request):
if request.method == "POST":
form = AuthenticationForm(request, data=request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
messages.info(request, "You are now logged in as {username}.")
return redirect("index")
else:
messages.error(request,"Invalid username or password.")
else:
messages.error(request,"Invalid username or password.")
form = AuthenticationForm()
return render(request=request, template_name="login_request.html", context={"login_form":form})
#Logout
def logout_request(request):
logout(request)
messages.info(request, "You have successfully logged out.")
return redirect("welcomepage")
def delete_FWN3(request, pk):
Product.objects.filter(id=pk).delete()
items = Product.objects.all()
context = {
'items': items
}
return render(request,'index.html',context)
def delete_LIFE_OF_JESUS(request, pk):
Product.objects.filter(id=pk).delete()
items = Product.objects.all()
context = {
'items': items
}
return render(request,'index.html',context)
def delete_Friends_with_God_Bible_Story(request, pk):
Product.objects.filter(id=pk).delete()
items = Product.objects.all()
context = {
'items': items
}
return render(request,'index.html',context)
class WelcomePage(TemplateView):
template_name = "Welcome_Page.html"
def register(response):
if response.method == "POST":
form = UserCreateForm(response.POST)
if form.is_valid():
form.save()
return redirect("login_request")
else:
form = UserCreateForm()
return render(response, 'Inventory/register.html', {"form":form})
#search
class SearchResultsView(ListView):
model = Product
template_name = "search_results.html"
def get_queryset(self):
query = self.request.GET.get('q')
object_list = Product.objects.filter(
Q(Sales__icontains=query) | Q(Product__icontains=query)
)
return object_list
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['query'] = self.request.GET.get('q')
return context
我的设置:
import os
from pathlib import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
TEMPLATE_DIR = os.path.join(BASE_DIR,'templates')
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '5r0zcv0wdd2yhow_t)k)xj$c(3mnkqiww_yr0w7k+i+ii36)5v'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'crispy_forms',
'debug_toolbar',
'Inventory',
'import_export',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware'
]
ROOT_URLCONF = 'grouppublishingindia.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'grouppublishingindia.wsgi.application'
# Database
# https://docs.djangoproject.com/en/3.1/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# Password validation
# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/3.1/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.1/howto/static-files/
STATIC_URL = '/static/'
我的登录页面HTML内容:
{% extends "base.html" %}
{% block content %}
{% load crispy_forms_tags %}
<!--Login-->
<div class="container py-5">
<h1>Login</h1>
<form method="POST">
{% csrf_token %}
{{ login_form|crispy }}
<button class="btn btn-primary" type="submit">Login</button>
</form>
<p class="text-center">Don't have an account? <a href="/register_request">Create an account</a>.</p>
</div>
{% endblock %}
我的注册页面内容:
{% extends "base.html" %}
{% block content %}
{% load static %}
{% load crispy_forms_tags %}
<!--Register-->
<div class="container py-5">
<h1>Register</h1>
<form method="POST">
{% csrf_token %}
{{ register_form|crispy }}
<button class="btn btn-primary" type="submit">Register</button>
</form>
<p class="text-center">If you already have an account, <a href="/login_request">login</a> instead.</p>
</div>
{% endblock %}
我的搜索html页面内容:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>search results</title>
</head>
<body>
<ul>
{% for product in object_list %}
<li>
{{ product.Product}}
</li>
{% endfor %}
</ul>
</body>
</html>
My Models.py内容
from django.contrib import auth
from django.db import models
from django.urls import reverse
# Create your models here.
class User(auth.models.User, auth.models.PermissionsMixin):
def __str__(self):
return "@{}".format(self.username)
class Category (models.Model):
Name = models.CharField(max_length=200,blank=False)
def __str__(self):
return self.Name
class Product (models.Model):
Category = models.ForeignKey(Category, on_delete=models.SET_NULL, related_name="products", null=True)
Product = models.CharField(max_length=200,blank=False)
Total_Produced = models.IntegerField()
Sales = models.IntegerField(default=0)
Total_Available = models.IntegerField(default=0)
objects = models.Manager()
def __str__(self):
return self.Product
@property
def Save(self):
return self.Total_Produced - self.Sales
class Rocky_Railway(models.Model):
Product = models.CharField(max_length=200,blank=False)
Total_Produced = models.IntegerField()
Sales = models.IntegerField(default=0)
Total_Available = models.IntegerField(default=0)
def __str__(self):
return 'Product:{0} Total_Produced:{1} Sales:{2} Total_Available:{3} '.format(self.Product, self.Total_Produced, self.Sales, self.Total_Available)
class Roar(Rocky_Railway):
pass
class Shipwreched(Rocky_Railway):
pass
class FWN1(Rocky_Railway):
pass
class FWN2(Rocky_Railway):
pass
class FWN3(Rocky_Railway):
pass
class LIFE_OF_JESUS(Rocky_Railway):
pass
class Leader_Manuals(Rocky_Railway):
pass
class Student_Books(Rocky_Railway):
pass
class Friends_with_God_Bible_Story(Rocky_Railway):
pass
我的索引页内容:
{% extends "base.html" %}
{% block body %}
<br>
<div class="jumbotron text-center">
<a href="{% url 'Inventory:display_Rocky_Railway' %}" class="btn btn-primary btn-md" role="button" style="padding:10px 20px; font-size:20px; font:Adobe Garamond Pro Bold">ROCKY RAILWAY</a>
<a href="{% url 'Inventory:display_Roar' %}" class="btn btn-primary btn-md" role="button" style="padding:10px 20px; font-size:20px; font:Adobe Garamond Pro Bold">ROAR</a>
<a href="{% url 'Inventory:display_Shipwreched' %}" class="btn btn-primary btn-md" role="button" style="padding:10px 20px; font-size:20px; font:Adobe Garamond Pro Bold">SHIPWRECKED</a>
<a href="{% url 'Inventory:display_FWN1' %}" class="btn btn-primary btn-md" role="button" style="padding:10px 20px; font-size:20px; font:Adobe Garamond Pro Bold">FWN1</a>
<a href="{% url 'Inventory:display_FWN2' %}" class="btn btn-primary btn-md" role="button" style="padding:10px 20px; font-size:20px; font:Adobe Garamond Pro Bold">FWN2</a>
<a href="{% url 'Inventory:display_FWN3' %}" class="btn btn-primary btn-md" role="button" style="padding:10px 20px; font-size:20px; font:Adobe Garamond Pro Bold">FWN3</a>
<a href="{% url 'Inventory:display_LIFE_OF_JESUS' %}" class="btn btn-primary btn-md" role="button" style="padding:10px 20px; font-size:20px; font:Adobe Garamond Pro Bold">LIFE OF JESUS</a>
<a href="{% url 'Inventory:display_Friends_with_God_Bible_Story' %}" class="btn btn-primary btn-md" role="button" style="padding:10px 20px; font-size:20px; font:Adobe Garamond Pro Bold">FRIENDS WITH GOD BIBLE STORY</a>
<a href="{% url 'Inventory:add_Rocky_Railway' %}" class="btn btn-warning btn-sm" role="button" style="padding:4px 20px; font-size:30px; font:Adobe Garamond Pro Bold">+</a>
<br>
<br>
<h6 style="font:Adobe Garamond Pro Bold">Currently Viewing {{header}}</h6>
<br>
<table class="table table-blue text-center" >
<thead>
<tr>
<th>ID</th>
<th>PRODUCT</th>
<th>TOTAL PRODUCED</th>
<th>SALES</th>
<th>TOTAL AVAILABLE</th>
</tr>
</thead>
<tbody>
{% for item in items %}
<tr>
<td style="font:Adobe Garamond Pro Bold">{{ item.pk }}</td>
<td>{{ item.Product }}</td>
<td>{{ item.Total_Produced }}</td>
<td>{{ item.Sales }}</td>
<td>{{ item.Save }}</td>
{% if header == "Rocky_Railway" %}
<td>
<a href="{% url 'Inventory:edit_Rocky_Railway' item.pk %}" class="btn btn-warning btn-sm" role="button">Edit</a>
<a href="{% url 'Inventory:delete_Rocky_Railway' item.pk %}" class="btn btn-danger btn-sm" role="button">X</a>
</td>
{% elif header == "Roar" %}
<td>
<a href="{% url 'Inventory:edit_Roar' item.pk %}" class="btn btn-warning btn-sm" role="button">Edit</a>
<a href="{% url 'Inventory:delete_Roar' item.pk %}" class="btn btn-danger btn-sm" role="button">X</a>
</td>
{% elif header == "Shipwreched" %}
<td>
<a href="{% url 'Inventory:edit_Shipwreched' item.pk %}" class="btn btn-warning btn-sm" role="button">Edit</a>
<a href="{% url 'Inventory:delete_Shipwreched' item.pk %}" class="btn btn-danger btn-sm" role="button">X</a>
</td>
{% elif header == "FWN1" %}
<td>
<a href="{% url 'Inventory:edit_FWN1' item.pk %}" class="btn btn-warning btn-sm" role="button">Edit</a>
<a href="{% url 'Inventory:delete_FWN1' item.pk %}" class="btn btn-danger btn-sm" role="button">X</a>
</td>
{% elif header == "FWN2" %}
<td>
<a href="{% url 'Inventory:edit_FWN2' item.pk %}" class="btn btn-warning btn-sm" role="button">Edit</a>
<a href="{% url 'Inventory:delete_FWN2' item.pk %}" class="btn btn-danger btn-sm" role="button">X</a>
</td>
{% elif header == "FWN3" %}
<td>
<a href="{% url 'Inventory:edit_FWN3' item.pk %}" class="btn btn-warning btn-sm" role="button">Edit</a>
<a href="{% url 'Inventory:delete_FWN3' item.pk %}" class="btn btn-danger btn-sm" role="button">X</a>
</td>
{% elif header == "LIFE_OF_JESUS" %}
<td>
<a href="{% url 'Inventory:edit_LIFE_OF_JESUS' item.pk %}" class="btn btn-warning btn-sm" role="button">Edit</a>
<a href="{% url 'Inventory:delete_LIFE_OF_JESUS' item.pk %}" class="btn btn-danger btn-sm" role="button">X</a>
</td>
{% else %}
<td>
<a href="{% url 'Inventory:edit_Friends_with_God_Bible_Story' item.pk %}" class="btn btn-warning btn-sm" role="button">Edit</a>
<a href="{% url 'Inventory:delete_Friends_with_God_Bible_Story' item.pk %}" class="btn btn-danger btn-sm" role="button">X</a>
</td>
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
{% endblock %}
我的根来自:
C:\User\Badgira\Documents\PythonProject\Projects\ | | grouppublishingindia\ | | templates\ | | Welcome_Page | login_request | register | search_results
您没有为“../login”定义路径,因此无法使用此url,否则会出现错误
“每当我访问网站”。。。这是什么意思?当您转到127.0.0.1:8000/?根据您的url.py,这应该调用索引。这就是你所期望的吗?如果您希望欢迎页面显示您需要删除:
再加上
“第二页”是什么意思?您指的是哪个url/视图
在none中,如果你的html代码我可以找到类似“搜索栏”的东西,这是什么意思
相关问题 更多 >
编程相关推荐