Django URL 调度程序和列表?

Django URL dispatcher and lists?

我不确定标题术语是否有意义。但是我对 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>

这是我的 url 页面:

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”函数中创建一个列表,我如何在每个页面上自动迭代它,就像“项目”递增一样?我在我的 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 页面上,我希望在 /your_details_view/2、testing2.html 页面上显示 current_day_home_team[1]。同样,这些页面是在我单击主 testing.html 页面的超链接后创建的。目前发生的是每个更深入的游戏页面显示 /your_details_view/1 - /your_details_view/10 显示整个 current_day_home_team 列表,这不是我想要的。

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

  1. your_details_view中return的对象away是一个列表。列表或查询集不携带pk 字段。只有直接的 django 模型有一个。所以正确的方法应该是使用 for 循环遍历该列表并访问循环内的 pk 字段。正如您在 testing.html.

    中所做的那样
  2. 您在 your_details_view 中构建的一些查询集使用 values_list 函数。 如果您将需要 pk 字段,您还必须将其包含在 values_list 调用中。例如,在列表 away_team_list1 中只会保留 actual_over_under_result_field,而不保留 pk 字段。

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

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

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