鱼C论坛

 找回密码
 立即注册
查看: 1443|回复: 2

使用Django创建网页,报错

[复制链接]
发表于 2021-7-24 21:24:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
报错内容如下:
  1. Page not found (404)
  2. Request Method:        GET
  3. Request URL:        http://localhost:8000/topics/%7B%25%20url%20'learning_logs:edit_entry'%20entry.id%20%25%20%7D
  4. Using the URLconf defined in learning_log.urls, Django tried these URL patterns, in this order:

  5. admin/
  6. [name='index']
  7. topics/ [name='topics']
  8. topics/<int:topic_id> [name='topic']
  9. new_topic/ [name='new_topic']
  10. new_entry/<int:topic_id>/ [name='new_entry']
  11. edit_entry/<int:entry_id>/ [name='edit_entry']
  12. The current path, topics/{% url 'learning_logs:edit_entry' entry.id % }, didn’t match any of these.
复制代码


urls.py内容如下:
  1. '''定义learning_logs的url模式'''
  2. from django.urls import path
  3. from . import  views
  4. app_name = 'learning_logs'
  5. urlpatterns = [
  6.     #主页
  7.     path('',views.index,name = 'index'),
  8.     #显示所有的主题
  9.     path('topics/',views.topics,name='topics'),
  10.     #特定主题的详细界面
  11.     path('topics/<int:topic_id>', views.topic,name='topic'),
  12.     #用于添加新主题的页面
  13.     path('new_topic/',views.new_topic,name = 'new_topic'),
  14.     path('new_entry/<int:topic_id>/',views.new_entry,name='new_entry'),
  15.     path('edit_entry/<int:entry_id>/',views.edit_entry,name='edit_entry'),

  16. ]
复制代码


view.py内容如下:
  1. from django.shortcuts import render,redirect
  2. from .models import Topic,Entry
  3. from .forms import TopicForm,EntryForm
  4. # Create your views here.

  5. def index(request):
  6.     '''学习笔记的主页'''
  7.     return render(request,'learning_logs/index.html')

  8. def topics(request):
  9.     '''显示所有主题'''
  10.     topics = Topic.objects.order_by('date_added')
  11.     context = {'topics':topics}
  12.     return render(request, 'learning_logs/topics.html',context)

  13. def topic(request,topic_id):
  14.     '''显示单个主题及其所有的条目'''
  15.     topic = Topic.objects.get(id=topic_id)
  16.     entries = topic.entry_set.order_by('-date_added')
  17.     context = {'topic':topic,'entries':entries}
  18.     return render(request,'learning_logs/topic.html',context)

  19. def new_topic(request):
  20.     '''添加新主题'''
  21.     if request.method != 'POST' :
  22.         #未提交数据,创建一个新表单
  23.         form = TopicForm()
  24.     else:
  25.         #post提交数据:对数据进行处理
  26.         form = TopicForm(data=request.POST)
  27.         if form.is_valid():
  28.             form.save()
  29.             return redirect('learning_logs:topics')

  30.     #显示空表单或指出表单数据无效
  31.     context = {'form':form}
  32.     return render(request,'learning_logs/new_topic.html',context)

  33. def new_entry(request,topic_id):
  34.     '''在特定主题中添加条目'''
  35.     topic = Topic.objects.get(id = topic_id)
  36.     if request.method != 'POST':
  37.         #未提交数据,创建一个空表单
  38.         form = EntryForm()
  39.     else:
  40.         #POST提交的数据,对数据进行处理
  41.         form = EntryForm(data = request.POST)
  42.         if form.is_valid():
  43.             new_entry = form.save(commit=False)
  44.             new_entry.topic = topic
  45.             new_entry.save()
  46.             return redirect('learning_logs:topic',topic_id = topic_id)
  47.     #显示空表单或指出表单的数据无效
  48.     context = {'topic':topic,'form':form}
  49.     return render(request,'learning_logs/new_entry1.html',context)

  50. def edit_entry(request,entry_id):
  51.     '''编辑既有条目'''
  52.     entry = Entry.objects.get(id=entry_id)
  53.     topic = entry.topic
  54.     if request.method != 'POST':
  55.         #初次尝试请求:使用当前条目填充表单
  56.         form = EntryForm(instance=entry)
  57.     else:
  58.         #POST提交的数据:对数据进行处理
  59.         form = EntryForm(instance=entry,data=request.POST)
  60.         if form.is_valid():
  61.             form.save()
  62.             return redirect('learning_logs:topic',topic_id=topic.id)
  63.     context = {'entry':entry,'topic':topic,'form':form}
  64.     return render(request,'learning_logs/edit_entry.html',context)
复制代码


网页模版 edit_entry.html:
  1. {%  extends 'learning_logs/base.html' %}
  2. {% block content %}
  3. <p>
  4.     <a href="{% url 'learning_logs:topic',topic.id}">{{topic}}</a>
  5. </p>
  6. <p>Edit entry:</p>
  7. <form action="{% url 'learning_logs:edit_entry' entry.id %}" method = 'post'>
  8.     {% csrf_token %}
  9.     {{form.as_p}}
  10.     <button name="submit">Save changes</button>
  11. </form>
  12. {% endblock content %}
复制代码


将链接关联到topic模板
  1. {% extends 'learning_logs/base.html' %}
  2. {% block content %}
  3. <p>
  4.     Topic:{{topic}}
  5. </p>
  6. <p>
  7.     Entries:
  8. </p>
  9. <p>
  10.     <a href="{% url 'learning_logs:new_entry' topic.id %}">Add new entry</a>
  11. </p>
  12. <ul>
  13.     {% for entry in entries %}
  14.         <li>
  15.             <p>
  16.                 {{ entry.date_added | date:'M d,Y H:i'}}
  17.             </p>
  18.             <p>
  19.                 {{entry.text | linebreaks}}
  20.             </p>
  21.             <p>
  22.                 <a href="{% url 'learning_logs:edit_entry' entry.id % }">Edit entry</a>
  23.             </p>
  24.         </li>
  25.     {% empty %}
  26.         <li>
  27.             There are no entries for this topic yet.
  28.         </li>
  29.     {% endfor %}
  30. </ul>
  31. {% endblock content %}
复制代码



报错的内容是:The current path, topics/{% url 'learning_logs:edit_entry' entry.id % }, didn’t match any of these.

按照这个程序,在我点击Edit entry的时候应该显示 http://localhost:8000/edit_entry/1,而报错页面的网址是:http://localhost:8000/topics/%7B%%20url%20'learning_logs:edit_entry'%20entry.id%20%%20%7D

反复查询了很多遍,也不知道 错误点在哪里
11.png

python 版本:3.9.6
Django 版本:3.2.5

请求各位大神帮助

本帖被以下淘专辑推荐:

  • · django|主题: 61, 订阅: 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-25 01:35:47 | 显示全部楼层
html模板里的
               <a href="{% url 'learning_logs:edit_entry' entry.id % }">Edit entry</a>

%后多了个空格,不能有空格。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-25 08:53:40 | 显示全部楼层
阿奇_o 发表于 2021-7-25 01:35
html模板里的
               Edit entry

万分感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 21:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表