Насколько я близок к достижению своей цели и какие методы мне нужно изучить и применить для этого? - PullRequest
0 голосов
/ 01 февраля 2019

Я создаю веб-сайт на основе базы данных с использованием фреймворка Django.Веб-сайт является интерфейсом для базы данных, которая содержит различные вопросы и ответы по физике.Цель базы данных состоит в том, чтобы организовать эти вопросы в соответствии с темой и получить их на веб-сайте в соответствии с данными, внесенными пользователем.

Первый вход - это форма выбора с 16 темами.Второй вход представляет собой форму выбора с двумя типами вопросов (решение проблем и несколько вариантов).Третий вход - это радио-флажки для вопросов с ответами или без ответов.Четвертый ввод - это форма выбора с разными номерами от 10 до 50 (по 10 шагов между каждым), чтобы определить количество требуемых вопросов.

Я уже создал сайт и базу данных.Что вызывает у меня проблемы, так это формы и модельные формы.Я читал и резюмировал документацию по Django, чтобы понять функциональные возможности Django.

Я хотел бы узнать мнение экспертов о том, где я нахожусь в процессе, и какие источники я могу прочитать, чтобы достичь своей цели.

Я пробовал разные источники, но поскольку я не сосредоточился на изучении, а на создании проекта, я потратил много времени, поэтому я анализировал документацию Django в болееправильный путь.

Это мой models.py, где я создал четыре classes и связал их вместе.Пожалуйста, скажите мне, если эта модель достигает моей цели.

    from django.db import models
    from home.choices import *

    # Create your models here.

    class Topic(models.Model):
        topic_name              = models.IntegerField(
                        choices = question_topic_name_choices, default = 1)
        def __unicode(self):
            return u'%s' % self.topic_name

    class Image (models.Model):
        image_file              = models.ImageField()

        def __unicode(self):
            return u'%s' % self.image_file

    class Question(models.Model):
        questions_type          = models. IntegerField(
                        choices = questions_type_choices, default = 1)
        question_topic          = models.ForeignKey(    'Topic',
                                        on_delete=models.CASCADE,
                                        blank=True,
                                        null=True)
        question_description    = models.TextField()
        question_answer         = models.ForeignKey(    'Answer',
                                        on_delete=models.CASCADE,
                                        blank=True,
                                        null=True)
        question_image          = models.ForeignKey(    'Image',
                                        on_delete=models.CASCADE,
                                        blank=True,
                                        null=True)

        def __unicode(self):
            return u'%s' % self.question_description

    class Answer(models.Model):
        answer_description      = models.TextField()
        answer_image            = models.ForeignKey(    'Image',
                                        on_delete=models.CASCADE,
                                        blank=True,
                                        null=True)

        def __unicode(self):
            return u'%s' % self.answer_description

Это мой forms.py, и я знаю, что он написан, вероятно, не полностью, поэтому я прошу о помощи, что мне нужночитать и учиться делать то, что я хочу.

    from django import forms
    from betterforms.multiform import MultiModelForm
    from .models import Topic, Image, Question, Answer

    class TopicForm(forms.ModelForm):
        topic_name      =   forms.ModelMultipleChoiceField(
                        queryset    =   Topic.objects.all(),
                        widget      =   forms.SelectMultiple(
                        attrs       =   {'class': ''}
                        ))
        class Meta:
            model   =   Topic
            fields  =   ['topic_name',]

    class QuestionForm(forms.ModelForm):
        question_type    =   forms.ModelChoiceField(
                        queryset    =   Topic.objects.all(),
                        widget      =   forms.Select(
                        attrs       =   {'class': ''}
                        ))
        class Meta:
            model   =   Question
            fields  =   ['questions_type',]
    class QuizMultiForm(MultiModelForm):
        form_classes    =   {
                    'topics'    :   TopicForm,
                    'questions' :   QuestionForm
        }
        def __str__(self, args, kwargs):
            return '%s %s' %(self.topic_name)

Это мой views.py, и самая большая проблема здесь, я понял, как работают представления, но я не знаю, как применить некоторые изправила, в основном правила Python.

from django.shortcuts import render, render_to_response
from django.http import HttpResponse, HttpResponseRedirect
from django.views.generic import CreateView
from home.models import Topic, Image, Question, Answer
from home.forms import QuizMultiForm

class QuizView(CreateView):
    form_classes    =   QuizMultiForm
    template_name   =   'index.html'
    def form_valid(self, form_classes):
        return super().form_valid(form_classes)

Это мой urls.py, и я не уверен, что у меня здесь проблема.

    from django.contrib import admin
    from django.urls import path, include
    from home.views import QuizView
    from ask.views import ask_page_view as ask_page_url
    from download.views import download_view as download_url

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('ask/', ask_page_url, name = 'ask_page'),
        path('home/', QuizView.as_view(), name = 'home_page'),
        path('download/', download_url, name = 'download_page'),
    ]

Это изображение, которое у меня естьвзято с моего сайта, но этот построен только с использованием HTML и CSS, что означает, что он не работает

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...