0

我正在为新年前夜构建一个简单的网络应用程序。我正在使用 Django 并设置了 SQLite3 数据库。

Web 应用程序背后的想法是,有人使用他们的 Twitter 用户名提交一段文本(在主页上完成一个句子),然后该句子及其关联的@username 打印在主页上,用户也可以在推特上发布它,如果他们希望。

我需要了解如何...

  • 让用户通过 Twitter 登录以验证他们的@username(可能使用包装器,例如 python-twitter 或您推荐的包装器)
  • 将文本和@username 发布到数据库并与发布的日期/时间一起保存
  • 从数据库中获取@username 和文本,并在主页上的帖子提要(Twitter 提要样式)中打印句子和@username(作为作者)

这是全新的领域,我感到压力很大,因为距离新年前夜只有几天了。任何帮助将非常感激!

4

1 回答 1

1
  1. 要让用户使用 twitter 登录/验证,您需要使用twitter APIOauth。如果您正在寻找现成的解决方案,我建议您查看 Raymond Penners 的django-allauth库,该库开箱即用。您可以使用这个allauth 教程来了解设置它的基础知识。

  2. 一旦你有 twitter 的工作 allauth 应用程序,你将需要创建一个model将保存信息,如消息、发布消息的日期和时间以及该消息的所有者。实现此目的的一个非常简单的模型可能如下所示。

    类消息(模型。模型):

    """
    This is the message class that stores all the message
    objects.
    """
    
    message = models.TextField()
    time_posted = models.DateTimeField(auto_now_add=True)
    owner = models.ForeignKey(User)
    

完成模型后,您将需要一个表单,用户将在其中实际发布消息。该表单可以是一个简单的 ModelForm,如下所示。

MessageForm(forms.ModelForm):
    """
    This is the base form for posting a message
    """

    class Meta:
        model = models.Message

        fields = ('message')

现在您需要将表单传递给呈现模板的视图。也许是这样的。在同一视图中,您还可以处理发布消息。

def post_message(request):
    form = forms.MessageForm()
    if request.method == 'POST':
        p_form = forms.MessageForm(request.POST)
        if p_form.is_valid():
            data = p_form.save(commit=False)
            data.owner = request.user
            data.save()
            return redirect('/success/')  # Redirect to a success page
        else:
            raise ValidationError('The Form did not validate')
    return render_to_response('post_message.html', {'form' : form}, context_instance=RequestContext(request))

现在,您需要将一个名为“post_message”的模板写入您的模板templates,一旦请求上述视图,该模板就会被调用。一个非常简单的模板将如下所示。

{% if form.errors %}
    {{ form.errors %}
{% endif %}

<form action ="" method ="POST">
{% csrf_token %}
{{ form }}
<input type="submit" id="submit" value="Post Message" />
</form>

准备好模板后,您可以在 urls.py 文件中使用一个简单的 url(定义如下)将请求的 url 连接到您的视图。因此,如果您希望在用户请求时调用上述视图yourapp.com/post/

url(r'^post/$', 'yourapp.views.post_message', name="post"),

就是这样。我还建议您阅读Django 的基本投票应用程序教程,以更多地了解 django 实体是如何一起工作的。

希望以上示例对您的项目有所帮助。

于 2012-12-27T21:00:02.490 回答