问题描述
models.py
class Contact(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
message = models.TextField(max_length=400)
def __str__(self):
return f"{self.first_name} {self.last_name}"
forms.py
class ContactForm(ModelForm):
class Meta:
model = Contact
fields = ["first_name","last_name","message"]
widgets = {
"message": Textarea(
attrs={
"placeholder": "Xabaringizni kiriting!"
}
)
}
项目urls.py
from django.contrib import admin
from django.conf.urls import url,include
from . import views
urlpatterns = [
url(r'^$',views.HomePage.as_view(),name='home'),url(r'^admin/',admin.site.urls),url(r'^blog/',include('blog.urls',namespace='blog')),#url(r'^blog/',include('django.contrib.auth.models.urls')),url(r'^about/',views.AboutPage.as_view(),name='about'),#url(r'^contact/',views.ContactPage.as_view(),name='contact'),]
blog / urls.py
from django.urls import path
from . import views
from . import models
#Template tagging
app_name = 'blog'
urlpatterns = [
path('',views.PostList.as_view(template_name='index.html'),name='index'),path('<slug:slug>/',views.post_detail,name='post_detail'),path("contact/",views.ContactCreate.as_view(template_name='contact1.html'),name="contact"),path("thanks/",views.thanks,name="thanks"),]
blog / views.py
from django.shortcuts import render,get_object_or_404
from django.views import generic
from django.views.generic import ListView,DetailView,CreateView
from .models import Post,Contact
from django.urls import reverse_lazy
from django.http import HttpResponse
from .forms import CommentForm,ContactForm
class ContactCreate(CreateView):
model = Contact
form_class = ContactForm
success_url = reverse_lazy("thanks")
def thanks(request):
return HttpResponse("Rahmat Siz bilan tez orada bog`lanamiz!")
contact_page / contact1.html我的所有页面在导航栏中都这样链接
<nav class="navbar navbar-expand-sm navbar-dark bg-dark">
<div class="container">
<a href="{% url 'home' %}" class="navbar-brand"><i class="fas fa-balance-scale">iLawyer.uz</i></a>
<button class="navbar-toggler" data-toggle="collapse" data-target="#navbarCollapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a href="{% url 'home' %}" class="nav-link">Bosh sahifa</a>
</li>
<li class="nav-item">
<a href="{% url 'about' %}" class="nav-link">Biz haqimizda</a>
</li>
<li class="nav-item">
<a href="{% url 'blog:index' %}" class="nav-link">Blog</a>
</li>
<li class="nav-item">
<a href="{% url 'blog:contact' %}" class="nav-link">Biz bilan bog'laning</a>
</li>
</ul>
</div>
</div>
</nav>
<form method="POST" action="{% url 'blog:contact' %}">
{% csrf_token %}
{{ form }}
<button type="submit">SEND</button>
</form>
创建模型后,我已经链接了页面,并创建了视图,并在urls.py中链接了这些页面,但是找不到联系页面,它显示了一个错误:
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/blog/contact/
Raised by: blog.views.post_detail
in the terminal: Not Found: /blog/contact/
解决方法
更改URL模式的顺序。也就是说,必须将 post_detail URL放在列表的底部
urlpatterns = [
path('',views.PostList.as_view(template_name='index.html'),name='index'),path("contact/",views.ContactCreate.as_view(template_name='contact1.html'),name="contact"),path("thanks/",views.thanks,name="thanks"),path('<slug:slug>/',views.post_detail,name='post_detail'),
]
,
在您的blog/urls.py
文件中,您将模板名称称为'contact1.html'
。将其更改为contact_page/contact1.html
。