【问题标题】:Django URL dispatcher and lists?Django URL 调度程序和列表?
【发布时间】:2022-01-21 18:26:06
【问题描述】:

我不确定标题术语是否有意义。但是我对 URL 调度程序的了解非常松散,我在这里真正要问的是关于调度程序的问题。

这是我的视图文件:

def current_game_table(request):
    items = list(Nbav8.objects.using('totals').all())

    # rest of your code
    return render(request, 'home/testing.html', {'items': items})

def your_details_view(request, pk):

    item = Nbav8.objects.using('totals').get(pk=pk)

    current_day_home_team = list(Nbav8.objects.using('totals').values_list('home_team_field', flat=True))
    current_day_away_team = list(Nbav8.objects.using('totals').values_list('away_team_field', flat=True))

    awayuyu = []
    homeuyu = []

    for team in current_day_home_team:
        home_team_list1 = PreviousLossesNbav1WithDateAgg.objects.using('totals').filter(Q(away_team_field=team) | Q(home_team_field=team)).values_list('actual_over_under_result_field', flat=True)

        homeuyu.append(list(home_team_list1[:5]))


    home_team_list2 = homeuyu

    typeitem = type(item)
    typehome = type(current_day_home_team)

    for team in current_day_away_team:
        away_team_list1 = PreviousLossesNbav1WithDateAgg.objects.using('totals').filter(Q(away_team_field=team) | Q(home_team_field=team)).values_list('actual_over_under_result_field', flat=True)
        away_teamdd = away_team_list1[:5]

        awayuyu.append(list(away_team_list1[:5]))


    away_team_list2 = awayuyu


    return render(request, 'home/testing2.html', {'item': item, 'away': away_team_list2, 'home': home_team_list2, 'type1': typeitem, 'type2': typehome, 'eep': current_day_home_team})

这是我的 testing.html

Hello World

{{ items }}

{% for item in items %}
        <a href="{% url 'your_details_view' item.pk %}">{{ item.home_team_field }}</a>
{% endfor %}

这里是 testing2.html

<p>The price of this item is: {{ item }}</p>
<p>The price of this item is: {{ home }}</p>
<p>The price of this item is: {{ away }}</p>


{{ eep }}


<a href="{% url 'your_details_view' item.pk %}">{{ away }}</a>

这是我的网址页面:

from django.urls import path, re_path
from apps.home import views

urlpatterns = [



    # The home page
    #path('', views.index, name='home'),


    # Matches any html file

    #path('charttest/', views.charttest, name='charts'),
    path('', views.nba, name='nba'),
    path('nbav2/', views.nba2, name='nba2'),
    path('nbav3/', views.nba3, name='nba3'),
    path('ncaa/', views.ncaa, name='ncaa'),
    path('nhl/', views.nhl, name='nhl'),
    path('testing/', views.current_game_table, name='testing'),
    path('your_details_view/<int:pk>', views.your_details_view, name='your_details_view')
  #  re_path(r'^.*\.*', views.pages, name='pages'),

]
class Nbav8(models.Model):
    home_team_field = models.TextField(db_column='HOME TEAM:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_team_field = models.TextField(db_column='AWAY TEAM:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    projected_points_field = models.FloatField(db_column='PROJECTED POINTS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_injury = models.TextField(db_column='Home Injury', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters.
    away_injury = models.TextField(db_column='Away Injury', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters.
    game_points_with_formula_field = models.BigIntegerField(db_column='GAME POINTS WITH FORMULA:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    game_money_line_field = models.FloatField(db_column='GAME MONEY LINE:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    over_or_under = models.TextField(db_column='OVER OR UNDER', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters.

    class Meta:
        managed = True
        db_table = 'nbav8'

class PreviousLossesNbav1WithDateAgg(models.Model):
    home_team_field = models.TextField(db_column='HOME TEAM:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_team_field = models.TextField(db_column='AWAY TEAM:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    projected_points_field = models.FloatField(db_column='PROJECTED POINTS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_injury = models.TextField(db_column='Home Injury', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters.
    away_injury = models.TextField(db_column='Away Injury', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters.
    game_points_with_formula_field = models.BigIntegerField(db_column='GAME POINTS WITH FORMULA:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    game_money_line_field = models.FloatField(db_column='GAME MONEY LINE:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    over_or_under = models.TextField(db_column='OVER OR UNDER', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters.
    actual_game_points_field = models.BigIntegerField(db_column='ACTUAL GAME POINTS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_team_points_field = models.BigIntegerField(db_column='AWAY TEAM POINTS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_team_points_field = models.BigIntegerField(db_column='HOME TEAM POINTS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    actual_over_under_result_field = models.TextField(db_column='ACTUAL OVER UNDER RESULT:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    percentage_won_field = models.FloatField(db_column='Percentage Won:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    win_or_lose_field = models.TextField(db_column='Win Or Lose:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_assists_field = models.BigIntegerField(db_column='AWAY ASSISTS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_blocks_field = models.BigIntegerField(db_column='AWAY BLOCKS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_defensive_rebounds_per_game_field = models.BigIntegerField(db_column='AWAY DEFENSiVE REBOUNDS PER GAME:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_effective_field_goal_field = models.FloatField(db_column='AWAY EFFECTIVE FIELD GOAL %:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_fg_field = models.FloatField(db_column='AWAY FG %:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_fg_attempts_field = models.BigIntegerField(db_column='AWAY FG ATTEMPTS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_fico_field = models.FloatField(db_column='AWAY FICO:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_free_throw_field = models.FloatField(db_column='AWAY FREE THROW %:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_free_throw_rate_field = models.FloatField(db_column='AWAY FREE THROW RATE:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_offensive_rebounds_per_game_field = models.BigIntegerField(db_column='AWAY OFFENSIVE REBOUNDS PER GAME:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_personal_fouls_field = models.BigIntegerField(db_column='AWAY PERSONAL FOULS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_points_per_game_field = models.FloatField(db_column='AWAY POINTS PER GAME:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_steal_percentage_field = models.FloatField(db_column='AWAY STEAL PERCENTAGE:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_team_3_field = models.FloatField(db_column='AWAY TEAM 3%:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_team_opp_ppg_field = models.FloatField(db_column='AWAY TEAM OPP PPG:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_team_pace_field = models.FloatField(db_column='AWAY TEAM PACE:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_team_projected_points_field = models.FloatField(db_column='AWAY TEAM PROJECTED POINTS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_total_shot_percentage_field = models.FloatField(db_column='AWAY TOTAL SHOT PERCENTAGE:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_turnover_per_game_field = models.BigIntegerField(db_column='AWAY TURNOVER PER GAME:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    away_turnover_percentage_field = models.FloatField(db_column='AWAY TURNOVER PERCENTAGE:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_assists_field = models.BigIntegerField(db_column='HOME ASSISTS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_blocks_field = models.BigIntegerField(db_column='HOME BLOCKS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_defensive_rebounds_per_game_field = models.BigIntegerField(db_column='HOME DEFENSiVE REBOUNDS PER GAME:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_effective_field_goal_field = models.FloatField(db_column='HOME EFFECTIVE FIELD GOAL %:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_fg_field = models.FloatField(db_column='HOME FG %:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_fg_attempts_field = models.BigIntegerField(db_column='HOME FG ATTEMPTS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_fico_field = models.FloatField(db_column='HOME FICO:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_free_throw_field = models.FloatField(db_column='HOME FREE THROW %:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_free_throw_rate_field = models.FloatField(db_column='HOME FREE THROW RATE:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_offensive_rebounds_per_game_field = models.BigIntegerField(db_column='HOME OFFENSIVE REBOUNDS PER GAME:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_personal_fouls_field = models.BigIntegerField(db_column='HOME PERSONAL FOULS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_points_per_game_field = models.FloatField(db_column='HOME POINTS PER GAME:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_steal_percentage_field = models.FloatField(db_column='HOME STEAL PERCENTAGE:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_team_3_field = models.FloatField(db_column='HOME TEAM 3%:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_team_opp_ppg_field = models.FloatField(db_column='HOME TEAM OPP PPG:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_team_pace_field = models.FloatField(db_column='HOME TEAM PACE:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_team_projected_points_field = models.FloatField(db_column='HOME TEAM PROJECTED POINTS:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_total_shot_percentage_field = models.FloatField(db_column='HOME TOTAL SHOT PERCENTAGE:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_turnover_per_game_field = models.BigIntegerField(db_column='HOME TURNOVER PER GAME:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    home_turnover_percentage_field = models.FloatField(db_column='HOME TURNOVER PERCENTAGE:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
    date_field = models.DateTimeField(db_column='DATE:', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.

    class Meta:
        managed = False
        db_table = 'previous_losses_nbav1_with_date_agg'

我的问题是,your_details_view 中的项目会自动接收 pk,这只是一个自动增量 int。因此,当我单击主测试页面中的每个超链接时,它会将我带入第一个实例的 /your_details_view/1 子页面,第二个实例是 /2,这正是我想要的。我还可以在 testing2.html 视图中打印出项目,该视图在每个子 html 页面上自动显示 1、2、3。我的问题是..如果我在“your_details_view”函数中创建一个列表,我怎样才能像“item”增量一样在每个页面上自动迭代它?我在我的 testing2.html 页面中尝试了这个,但它没有像我希望的那样工作

<p>The price of this item is: {{ item }}</p>
<p>The price of this item is: {{ home }}</p>
<p>The price of this item is: {{ away }}</p>


{{ eep }}


<a href="{% url 'your_details_view' item.pk %}">{{ away.pk }}</a>

我将 .pk 添加到该列表或项目中,但它没有像我希望的那样索引 pk?

尝试添加更多上下文:

假设我的主页“testing.html”遍历了今天在电视上播放的所有游戏的列表。当我点击进入每个列出的特定游戏的超链接时,我会更深入地了解该游戏,即 testing2.html。如您所见,我还创建了一些列表,其中包含我想在每个页面上显示的附加数据,但我的问题是,每个 testing2.html 页面我只想显示在 your_details_view 中创建的所述列表的一个索引.所以在这种情况下,current_day_home_team 是我想传递给 test2.html 的数据,但我只希望 current_day_home_team[0] 显示在 /your_details_view/1,testing2.html 页面上,我希望 current_day_home_team[1] 在 /your_details_view/ 2、testing2.html页面。在我单击主 testing.html 页面的超链接后,这些页面再次创建。目前发生的情况是显示 /your_details_view/1 的更深入的游戏页面 - /your_details_view/10 显示整个 current_day_home_team 列表,这不是我想要的。

【问题讨论】:

    标签: python django django-urls


    【解决方案1】:

    有点难以理解您的问题。但是您可以尝试一些方法来发现并解决您的问题。

    1. 您从your_details_view 返回的对象away 是一个列表。 列表或查询集不带有pk 字段。只有直接 django 模型有一个。因此,正确的方法应该是使用 for 循环遍历该列表并访问循环内的 pk 字段。正如你在testing.html 所做的那样。

    2. 您在your_details_view 中构造的一些查询集使用values_list 函数。如果您需要在模板中使用pk 字段,您还必须将它包含在您的@ 987654328@电话。例如,在away_team_list1 列表中,只会保留actual_over_under_result_field,但不会保留pk 字段。

    顺便说一句... QuerySet 是可迭代的,因此您实际上不需要显式地将其强制转换为 list 以在模板上遍历它。

    # no need to convert to list type 
    items = list(Nbav8.objects.using('totals').all())
    

    【讨论】:

    • 谢谢你提供的信息,那么有两件事。在第 1 点 - 在我的 testing.html 中,我循环遍历列表,这就是我想要的,因为我想在一个 html 页面上显示整个列表内容。我的问题是,我只想在子页面 1 上显示 away_team_list 的索引 1,并且只在子页面 2 上显示 away_team_list 的索引 2,而不是遍历整个列表,如果这有意义吗?在 2 上,我不确定如何在值列表中包含该 pk 字段?我相信这可能正是我想要做的,因为这将在 pk 索引之后通过该列表的页面,对吗?
    • 您能否将相关模型附加到您的问题中?
    • 添加了我正在使用的两个模型。
    • 我还在原始问题下方添加了更多信息,以尝试更好地说明我的问题以及我想要做什么。感谢您的帮助。
    • 我相信我会被告知在我的后端做我正在尝试的事情?这就是我要做的,我可以创建该数据并发布到数据库。然后我将能够抓住它并使用“项目”。遍历列表。我认为这个问题令人困惑,因为我想做的事情毫无意义:)。感谢您的回复和帮助。
    【解决方案2】:

    我自己对这个问题的回答是在我的后端 py 文件上生成列表并发布到数据库,然后使用 pk 作为我的索引从数据库表中获取,我相信我的问题中的工作应该在后端完成而不是在视图文件中。

    【讨论】:

      猜你喜欢
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 2021-07-09
      • 2016-04-08
      • 2017-04-24
      • 1970-01-01
      • 2014-08-28
      相关资源
      最近更新 更多