已验证用户post DJANGO,保存表单

已验证用户post DJANGO,保存表单,django,forms,Django,Forms,我正在创建一个应用程序,用户可以搜索配方的成分。我希望登录的用户可以添加自己的食谱。我已经在使用ModelForm的地方创建了表单。现在我想做的是,在用户推送后,提交配方将被添加/保存到我可以在管理面板中看到的配方中,也可以搜索它,但现在看起来似乎不可能保存新配方 查看我的代码: def add_recipe(request): if not request.user.is_authenticated: return redirect('login_required

我正在创建一个应用程序,用户可以搜索配方的成分。我希望登录的用户可以添加自己的食谱。我已经在使用ModelForm的地方创建了表单。现在我想做的是,在用户推送后,提交配方将被添加/保存到我可以在管理面板中看到的配方中,也可以搜索它,但现在看起来似乎不可能保存新配方

查看我的代码:

def add_recipe(request):

     if not request.user.is_authenticated:
         return redirect('login_required')

     add_recipe = RecipeForm(request.POST or None)
     if add_recipe.is_valid():
          print("your recipe has been added!")
          add_recipe.save()
     template = "drinks/add_recipe.html"
     return render(request, template, {'RecipeForm': add_recipe})
我的表格:

from django.forms import ModelForm
from drinks.models import Recipe

class RecipeForm(ModelForm):
    class Meta:
        model = Recipe
        fields = ['recipe_name', 'preparation', 'ingredients']
我的模板添加配方:

<form method="post" action="">
{% csrf_token %}
<table>
{{RecipeForm}}
</table>
<input type="submit" value="Add recipe"/>
</form>

我不确定您试图对视图做什么(它们的名称不是很明确),但是您是否通过
url.py
文件注册了视图


此外,模板中的
action=”“
也不会起任何作用。您需要指定url以发送post请求<代码>操作不应等于“”,而应等于要提交表单的url。在您的情况下,您应该有
action=“{%url”add\u recipe“%}”

什么意思是不可能?更新的对象是否未保存到数据库?您是否有任何错误?是的,未保存。我想我必须用不同的观点来写它。。因为我使用了modelForm,所以我猜是save方法。对不起,我是个新手,在深水中游泳……)不用担心,我们都去过那里;-)你有没有碰巧看过我的答案?不要犹豫,评论它,这样我可以帮助你。我希望登录的用户可以创建和保存自己的食谱。。。我不知道怎么做。配方应在url/搜索中可见。如果需要在模板中获取帮助检查
,您可以看到我已经添加了URL<代码>操作不应等同于
,而应等同于您要提交表单的url。在您的情况下,您应该有
action=“{%url”add_recipe“%}”
我知道,但我认为我一切都错了,因为我真正想要的是用户可以添加配方,以便实际保存表单。这是我的网站,请尝试查找“limon”,这样也许你会了解更多我的意思。。所以我更新了我的视图,但它就像一个拼图,不在全图中,但至少我知道碎片…:)我确实明白了,但请再读一遍我说的话。你希望你的用户提交一个表单,很好。但是,如果您不知道在哪里提交表单,您希望您的客户端浏览器如何知道在哪里发送表单?此外,我无法访问/add_recipe,这似乎是您问题的核心。我现在已经用git更新了它,您只需要注册帐户并登录,但它不兼容,然后我看到form method=“post”操作,在我尝试操作之前={%url'search%}但它不起作用
urlpatterns = [
    path('', views.drink_list, name='drink_list'),
    path('search/', views.search_results, name='search_results'),
    path('no_name/', views.drink_list, name='drink_list'),
    path('signup/', views.signup, name='signup'),
    path('add_recipe/', views.add_recipe, name='add_recipe'),
    path('login_required/', views.login_required, name='login_required'),
]