This is the error which i m getting when trying to click on the submit button: Page not found (404)
Request Method: POST
Request URL: http://127.0.0.1:8000/contact/
Using the URLconf defined in career.urls, Django tried these URL patterns, in this order:
admin/
myapp/
signup
/contact
^media/(?P\<path\>.\*)$
The current path, contact/, didn’t match any of these.
I am attaching my file code below:
联系方式.html:
<div class="container my-3">
<h1>Contact Admin</h1>
<form method="post" action="/contact">
{% csrf_token %}
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" id="name" name="name" aria-describedby="name">
</div>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control" name="email" id="email" aria- describedby="emailHelp" placeholder="Enter email">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<label for="phone">Phone Number</label>
<input type="phone" class="form-control" name="phone" id="phone">
</div>
<div class="form-group">
<label for="content">How may we help you?</label>
<textarea class="form-control" name="content" id="content" cols="30" rows="3"></textarea>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
views.py:
def contact(request):
if request.method == "POST":
name = request.POST['name']
email = request.POST['email']
phone = request.POST['phone']
content = request.POST['content']
print(name, email, phone, content)
contact.save()
return render(request, "myapp/contact.html")
models.py:
class Contact(models.Model):
sno = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
phone = models.CharField(max_length=10)
email = models.CharField(max_length=100)
content = models.TextField()
def __str__(self):
return self.name
admin.py:
from django.contrib import admin
from .models import\*
admin.site.register(Careers)
admin.site.register(Contact)
project urls.py:
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = \[
path('admin/', admin.site.urls),
path('myapp/', include('myapp.urls')),
path('signup', include('myapp.urls')),
path('/contact', include('myapp.urls')),
\] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
app urls.py:
from django.urls import path, include
from .import views
urlpatterns = \[
path("",views.index,name="CareerHome"),
path("about/",views.about,name="AboutUs"),
path("careers/\<int:myid\>",views.careers,name="Careers"),
path("aptitude/",views.aptitude,name="Aptitude"),
path("feedback/",views.feedback,name="Feedback"),
path("contact/",views.contact,name="Contact"),
path('signup',views.handleSignup,name="handleSignup"),
\]
我觉得我需要更改我的主项目的 urls 文件。我尝试更改它几次,但它仍然给我同样的错误,或者它带我到主页,而没有任何数据保存在我的数据库中。
请建议我应该在项目和应用程序的 url 文件中进行哪些更改来解决此错误
您面临的问题与您在 Django 项目中设置 URL 模式的方式有关。问题出在您项目的
urls.py
文件中,您在其中包含 /contact
路线的 URL 模式。
这是您项目中的有问题的行
urls.py
:
path('/contact', include('myapp.urls')),
在 Django 的
path()
函数中,路径前不应包含前导斜杠。定义此 URL 模式的正确方法应该是:
path('contact/', include('myapp.urls')),
请注意,我已经删除了
contact
之前的前导斜杠。
完成此更改后,项目中的
urls.py
应如下所示:
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('myapp/', include('myapp.urls')),
path('signup/', include('myapp.urls')),
path('contact/', include('myapp.urls')), # Corrected URL pattern
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
通过此更正,URL 模式应正确匹配,并且
contact
中的 myapp
视图应可通过 /contact/
URL 访问。