0

我正在做一个在线学校项目,我只是将科目与课程联系起来,所以当您单击课程时,您会看到它的主题页面,并且在主题页面中有课程(课程使用 ID 而不是 slug),我的问题是在链接HTML 页面中的课程 URL

所以我的问题是如何将课程链接到 HTML 页面中的材料(主题)?

我的代码:

网页:

<!DOCTYPE html>
<html>
    <head>    
        <meta charset="utf-8">
        <title>Name</title>
        <link rel="stylesheet" href="/static/css/style.css">
    </head>
    <body>
        <div>
            <nav>
                <div class="logo"><img src="/static/images/Logo.png" width=50px></div>
                <ul class="navul">
                    <li class="navli"><a class="nava" href="404.html">حول الموقع</a></li>
                    <li class="navli"><a class="nava" href="404.html">المكتبة</a></li>
                    <li class="navli"><a class="nava" href="404.html">الدورات</a></li>
                    <li class="navli"><a class="nava" href="/classes">الصفوف</a></li>
                    <li class="navli"><a class="nava" href="/">الصفحة الرئيسية</a></li>


                </ul>
            </nav>

            <div class="div1">
                <img src="/static/images/Logo.png" width="90" class="logo2">
                <h1 class="t1">المواد </h1>
            </div>

            <div class="cardrow">
                {% for material in material.all %}

                <div class="cardcolumn">

            {% for Lesson in Materials.vedio_set.all %}
            <a href="{% url 'vedio' lesson.id %}" > lesson1</a>
            {% endfor %}


                    <div class="card">
                    <img class="imgcls" src="{{ material.image.url }}">
                    <h1>{{ material.title }}</h1>
                    </div>
                    </a>
                   {% endfor %} 
                </div>              
            </div>
        </div>
    </body>
</html>

模型.py:

from django.db import models
from users.models import *


# Create your models here.
class Class(models.Model):
    image= models.ImageField(upload_to="images")
    name= models.CharField(max_length=200, default=1)
    title= models.CharField(max_length=200)

    def __str__(self):
        return self.title

class Material(models.Model):
    name= models.CharField(max_length=200, default=1)
    title= models.CharField(max_length=200)
    classes= models.ForeignKey(Class, default=1, on_delete=models.SET_DEFAULT)

    def __str__(self):
        return self.name
class Lesson(models.Model):
    slug=models.SlugField()
    video=models.FileField(upload_to="videos", default="")
    title=models.CharField(max_length=200)
    description=models.TextField()
    thumbnail=models.ImageField(upload_to="images")
    Material=models.ForeignKey(Material, default=1, on_delete=models.SET_DEFAULT)
    allowed_membrship=models.ManyToManyField(Membership)
    def __str__(self):
        return self.title

VIWES.py:

from django.shortcuts import render, get_object_or_404
from .models import Class, Material, Lesson
# Create your views here.


def home(request):
    Classes= Class.objects
    return render(request, 'classes/index.html', {"class":Classes})

def classes(request):
    Classes= Class.objects
    return render(request, 'classes/Classes.html', {"class":Classes})

def materials(request, classes_id):
    theclass= get_object_or_404(Class, pk=classes_id)
    Materials = Material.objects.all()
    context = {
        'classes': theclass,
        'material': Materials
    }
    return render(request, 'classes/Materials.html', context)


def vedio(request, lesson_id):
    theMaterial=get_object_or_404(Material, pk=lesson_id)
    theLesson=Lessons.objects.all
    context={
        'Material': theMaterial,
        'Lesson':theLesson
    }
return render(request, 'classes/Lesson.html', context)

网址:

 from django.contrib import admin
    from django.urls import path
    import classrooms.views
    import users.views
    from django.conf import settings
    from django.conf.urls.static import static

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', classrooms.views.home),
        path('classes', classrooms.views.classes),
        path('classes/<int:classes_id>', classrooms.views.materials, name="material"),
        path('signup', users.views.signup, name="signup"),
        path('login', users.views.login, name="login"),
        path('logout', users.views.logout, name="logout"),
        path('class/<int:classes_id>/<int:lessson_id>', classrooms.views.vedio, name="lessons")
    ]

    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

我想我遇到了一些典型的错误,抱歉

会员资格在另一个应用程序中,我认为您不需要它。就是这样,希望能理解我,谢谢

4

1 回答 1

1

根据这里发生的事情:

def materials(request, classes_id):
    theclass= get_object_or_404(Class, pk=classes_id)
    Materials = Material.objects.all()
    context = {
        'classes': theclass,
        'material': Materials
    }
    return render(request, 'classes/Materials.html', context)

您可以通过以下Materials.html方式反向访问Material.lesson_set.all()

<p> classes_id: {{ classes.id }} <p>

{% for lesson in material.lesson_set.all() %}
    <p><a href="{% url 'lessons' classes.id lesson.id %}">{{ lesson.title }}</a></p>
    <p>
        <a href="{{ lesson.file.url }}">{{ lesson.file.url }}</a>
        {{ lesson.description }}
    </p>
{% endfor %}

另请查看:

一些变量确实与混合大写混淆。

于 2020-03-05T16:30:30.097 回答