0

私は次のような文字列文型を持っています:

$ Duration%から、$Noun$は$Adjective$になります

「$$」に含まれる単語を確認し、SQLファイルからインポートされたデータベースのランダムな単語に置き換えるビューが必要です。

これがmodels/sqlファイルです:

from django.db import models
from django.utils import timezone

class Type(models.Model):
    type = models.CharField(max_length=50)
    value = models.CharField(max_length=1)


class Word(models.Model):
    dict = models.CharField(max_length=200)
    kind = models.CharField(max_length=1)

    def randword(self):
        words = self.objects.all()
        number = randrang(0,len(words))
        return words[number]


class Question(models.Model):
    question = models.CharField(max_length=200)

    def randquest(self):
        quests = self.objects.all()
        numbeq = randrang(0, len(quests))
        return quests[numbeq]


class Meta(models.Model):
    question = models.ForeignKey(Question)
    score = models.ForeignKey("Score")
    user = models.CharField(max_length=200)
    time = models.DateTimeField('date published')


class Score(models.Model):
    word = models.ForeignKey(Word)
    score = models.IntegerField()
    question = models.ManyToManyField(Question, through=Meta)

    def __unicode__(self):
        return self.score

SQLファイル

INSERT INTO quest_question (question) VALUES ('Starting in $Duration$, the $Noun$ will be $Adjective$');

INSERT INTO quest_word (dict, kind) VALUES ('Coffee Maker', '1');
INSERT INTO quest_word (dict, kind) VALUES ('24 hours', '3');
INSERT INTO quest_word (dict, kind) VALUES ('today', '3');
INSERT INTO quest_word (dict, kind) VALUES ('broken', '2');
INSERT INTO quest_word (dict, kind) VALUES ('Email server', '1');
INSERT INTO quest_word (dict, kind) VALUES ('15 minutes', '3');
INSERT INTO quest_word (dict, kind) VALUES ('tomorrow', '3');
INSERT INTO quest_word (dict, kind) VALUES ('unavailable', '2');


INSERT INTO quest_type (type, value) VALUES ('Noun', '1');
INSERT INTO quest_type (type, value) VALUES ('Adjective', '2');
INSERT INTO quest_type (type, value) VALUES ('Duration', '3');

ビューを書き始めました。それについていくつかの助けが必要です:

from quest.models import Word, Type, Score, Question, Meta
from django.utils import timezone


def question(request):
    sentence = Question.objects.all()
    find_words = re.findall(r"\w+%0-9a-zA-Z%", sentence.question)
4

1 に答える 1

1

表記を変更する場合は、次の2つのオプションがあります。

  1. Pythonを使用します。

    >>> 'Starting in {Duration}, the {Noun} will be {Adjective}'.format(Duration='24 hours', Noun='Coffee Maker', Adjective='broken')
    'Starting in 24 hours, the Coffee Maker will be broken'
    >>> 'Starting in %(Duration)s, the %(Noun)s will be %(Adjective)s' % dict(Duration='24 hours', Noun='Coffee Maker', Adjective='broken')
    'Starting in 24 hours, the Coffee Maker will be broken'
    
  2. Djangoを使用します。

    >>> from django.template import Context, Template
    >>> t = Template('Starting in {{Duration}}, the {{Noun}} will be {{Adjective}}') 
    >>> c = Context(dict(Duration='24 hours', Noun='Coffee Maker', Adjective='broken'))
    >>> t.render(c)
    u'Starting in 24 hours, the Coffee Maker will be broken'
    

残りはデータベースからプルしてランダムに単語を選択することです。これは簡単な部分です。

于 2012-09-26T14:53:09.040 に答える