【问题标题】:How can i write the urlpattern in a template calling a view function如何在调用视图函数的模板中编写 urlpattern
【发布时间】:2021-05-24 05:23:10
【问题描述】:

网址.py

from django.urls import path

from django.conf.urls import url

from . import views

urlpatterns = [

    path("", views.index, name= 'homepage'),

    url(r'^(?P<single_link>[0-9]+)/$', views.single_link, name='detail'),

    path("reserve_link/<str:print_link>", views.reserve_link, name='reserve_link')
]

Views.py

def single_link(request, single_link):
    try:
        movie_details = MovieSection.objects.get(pk=single_link)
        movi = MovieDetails.objects.get(movie_section__pk= single_link)
    except MovieSection.DoesNotExist:
        raise Http404("Movie does not exist")
    return render(request, "reviewmovie.html", {"part_ones": movie_details, "movi": movi})

def reserve_link(request, print_link):
    reserve = get_object_or_404(Ticket, movie_details__pk=print_link)

    context = {'reserve': reserve}
    return render(request, "reserve.html", context)

模型.py

class Ticket(models.Model):
    movie_details = models.ForeignKey(MovieDetails, on_delete= models.CASCADE)
    movie_section = models.ForeignKey(MovieSection, on_delete= models.CASCADE)
    price = models.CharField(max_length=20)
    movie_time = models.DateTimeField("Ticket time")
    ticket_link = models.CharField(max_length=20)

HTML 模板

 <a href="{% url 'reserve_link' %}">Seat Reservation</a> 

我的问题是如何

  1. 我将如何编写一个正确的 urlpattern 来调用 reserve_link 视图函数
  2. single_link函数在生成的页面中生成一个详情页,应该有一个从详情中获取的页面来显示一些信息。我将如何编写一个视图函数来调用该页面。
  3. 我将如何在 html 模板中编写墨迹。

【问题讨论】:

    标签: python html django url view


    【解决方案1】:

    所以基于你的网址;

    urlpatterns = [
    
        path("", views.index, name='homepage'),
    
        url(r'^(?P<single_link>[0-9]+)/$', views.single_link, name='detail'),
    
        path("reserve_link/<str:print_link>", views.reserve_link, name='reserve_link')
    ]
    

    这些将在 HTML 中使用类似的东西访问;

    <a href="{% url 'reserve_link' print_link='my reservation' %}">Seat Reservation</a> 
    
    <a href="{% url 'detail' single_link=3 %}">Detail for link 3</a> 
    
    <a href="{% url 'homepage' %}">Home</a> 
    

    根据您分享的观点,您的上下文变量似乎会成为您的链接;

    <a href="{% url 'reserve_link' print_link=movi.id %}">Seat Reservation</a> 
    
    <a href="{% url 'detail' single_link=part_ones.id %}">Detail for {{ part_ones }}</a> 
    

    reserve_link 视图将使用在查询中传递的参数 PK 用于 MovieDetails 实例,single_link 使用它的参数作为 MovieSection PK 的查询。

    基于您的两个 URL 参数都传递给对 ID 字段的查询这一事实,您应该考虑将您的 URL 更改为仅接受 int

    urlpatterns = [
    
        path("", views.index, name='homepage'),
    
        path("<int:movie_section_id>", views.single_link, name='detail'),
    
        path("reserve_link/<int:movie_details_id>", views.reserve_link, name='reserve_link')
    ]
    

    路径转换器的文档在这里; https://docs.djangoproject.com/en/3.1/topics/http/urls/#path-converters

    【讨论】:

      猜你喜欢
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      相关资源
      最近更新 更多