月亮偷着哭... 2022-01-06 13:52 采纳率: 84.6%
浏览 80
已结题

Django new_topic() got an unexpected keyword argument 'topic_id'

forms.py
from django import forms

from .models import Topic,Entry


class TopicForm(forms.ModelForm):
    class Meta:
        model = Topic
        fields = ['text']
        labels = {'text': ''}


class EntryForm(forms.ModelForm):
    """用于添加新条目的表单"""
    class Meta:
        model = Entry
        fields = ['text']
        labels = {'text': ''}
        widgets = {'text': forms.Textarea(attrs={'cols': 80})}
urls.py
"""定义learning_logs的URL模式"""
from django.conf.urls import url
#从当前的urls.py所在文件夹导入views
from . import  views

# 包含可在应用程序learning_ logs中请求的网页
urlpatterns = [
    #主页
    url(r'^$',views.index,name='index'),
    #显示所有的主题
    url(r'^topics/$',views.topics,name='topics'),
    #特定主题的详细页面
    url(r'^topics/(?P<topic_id>\d+)/$',views.topic,name='topic'),
    #用于添加新主题的网页
    url(r'^new_topic/$',views.new_topic,name='new_topic'),
    #用于添加新条目的页面
    url(r'^new_entry/(?P<topic_id>\d+)/$',views.new_topic,name="new_entry"),

]
views.py
 from django.shortcuts import render

from django.http import HttpResponseRedirect

from django.urls import reverse

from .models import Topic
from .forms import TopicForm,EntryForm


# Create your views here.
def index(request):
    """学习笔记的主题"""
    return render(request, 'learning_logs/index.html')


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


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


def new_topic(request):
    """添加新主题"""
    if request.method != 'POST':
        # 未提交数据,创建一个新表单
        form = TopicForm()
    else:
        # POST提交数据,对数据处理.我们使用用户输入的数据(它们存储在request.POST中)创建一个TopicForm实例
        form = TopicForm(request.POST)
        # is_valid()核实用户填写了所有必不可少的字段,且输入的数据与要求的字段类型一致
        if form.is_valid():
            # 表单中的数据写入数据库
            form.save()
        return HttpResponseRedirect(reserve('learning_logs:topics'))

    context = {'form': form}
    return render(request, 'learning_logs/new_topic.html', context)


def new_entry(request, topic_id):
    """添加新条目"""
    topic = Topic.objects.get(id=topic_id)

    if request.method != 'POST':
        # 没提交数据,建立一个空表单
        form = EntryFrom()

    else:
         # POST提交数据,对数据处理
         form = EntryFrom(data=request.POST)
         if form.is_valid():
            new_entry = form.save(commit=False)
            new_entry.topic = topic
            new_entry.save()
            return HttpResponseRedirect(reserve('learning_logs:topic', args=[topic_id]))

    context = {'topic': topic, 'form': form}
    return render(request, 'learning_logs/new_entry.html', context)




我找不到错误,获得意外参数要怎么解决?

  • 写回答

3条回答 默认 最新

  • 陈年椰子 2022-01-06 14:22
    关注

    把出错的信息截下图
    另外,你的代码来源有没有要求 用哪个版本的django? django 有几个大版本。各个版本的写法有所区别。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月14日
  • 已采纳回答 1月6日
  • 创建了问题 1月6日

悬赏问题

  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?