【发布时间】:2022-02-06 23:36:22
【问题描述】:
我正在制作一个活动网站,我需要显示登录用户的活动历史记录。
目前我只将事件实例传递给下面的模板而不是用户实例
所以当他点击某个事件的注册事件按钮时,ID 为 event.id。
{%for event in events%}
<div class='card-event'>
<div style="font-weight: 600; margin-top:5px;font-size: 20px;">{{event.name}}</div>
<div style="margin:10px 0 5px 0;">{{event.event_desc}}</div>
<div style="margin:5px 0 10px 0;">Entry Fee: {{event.entry_fee}}</div>
<a href="{%url 'update-event' value1=user.id value2=event.id%}"><button class='register-button'>Register for Event</button></a>
</div>
{%endfor%}
他被重定向到网址
path('update-event/<value1>/<value2>/',web_views.update_event,name='update-event')
然后是更新数据库的update_event视图,并被重定向到一个简单的稳定模板my_events.html
def update_event(request,value1,value2):
user= User.objects.get(id=value1)
ev=Event.objects.get(id=value2)
data=Participated(user_id=user,event_id=ev)
data.save()
return redirect(request,'webpage/my_events.html')
这是参与模型
class Participated(models.Model):
user_id=models.ForeignKey(User,on_delete=models.CASCADE)
event_id=models.ForeignKey(Event,on_delete=models.PROTECT)
我遇到了一个错误
Reverse for '<WSGIRequest: GET '/update-event/1/4/'>' not found. '<WSGIRequest: GET '/update-event/1/4/'>' is not a valid view function or pattern name.
那么如何将值插入参与模型?
编辑:即使更改如下路径后它也不起作用
path('update-event/<int:value1>/<int:value2>/',web_views.update_event,name='update-event')
Edit2:我的完整 urls.py(我只对所有 url 使用主 urls.py)
from django.contrib import admin
from django.contrib.auth import views as auth_views
from django.urls import path,include
from django.conf import settings
from django.conf.urls.static import static
from webpage import views as web_views
urlpatterns = [
path('admin/', admin.site.urls),
path('',include('webpage.urls')),
path('college/',web_views.college,name='college'),
path('fest/',web_views.fest,name='fest'),
path('fest/college/',web_views.fest_college,name='fest-college'),
path('fest/technical/',web_views.fest_technical,name='fest-technical'),
path('fest/cultural/',web_views.fest_cultural,name='fest-cultural'),
path('fest/sports/',web_views.fest_sports,name='fest-sports'),
path('fest/<value>/',web_views.fest_clg,name='fest-clg'),
path('event/',web_views.event,name='event'),
path('event/<value>/',web_views.event_fest,name='event-fest'),
path('my-events/',web_views.my_events,name='my-events'),
path('update-event/<int:value1>/<int:value2>/',web_views.update_event,name='update-event'),
path('register/',web_views.register,name='register'),
path('login/',auth_views.LoginView.as_view(template_name='webpage/login.html'),name='login'),
path('logout/',auth_views.LogoutView.as_view(template_name='webpage/logout.html'),name='logout')
]
if settings.DEBUG:
urlpatterns+=static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
我还像这样将用户实例添加到我的事件视图中
def event(request):
cur=request.user
context={
'events':Event.objects.all(),
'user': User.objects.get(id=cur.id)
}
return render(request,'webpage/event.html',context)
这是github https://github.com/GaganKaranth/fests-bangalore/tree/main中的django-project
【问题讨论】:
-
将路径更改为
path('update-event/<int: value1>/<int: value2>/',web_views.update_event,name='update-event') -
@raphael 即使那样它也不起作用
-
你能分享你完整的
urls.py,其中包含update-event视图 -
我认为您还需要将锚标记更改为
<a href="{%url 'update-event' user.id event.id %}">,但不确定如果您不将用户实例也传递到模板中它将如何工作。是的,如果您分享完整的urls.py,这将有所帮助,实际上是主要的和应用程序级别的。 -
@raphael 我已经添加了我的主要 urls.py 和新的事件视图。但是如果我像你说的那样更改锚标记,如何在视图中接受 event.id,它说“update_event() 有一个意外的关键字参数‘eventid’”,我已经添加了 github 文件
标签: html django django-rest-framework django-views