【问题标题】:trying to display the image that got extracted from the user posted link试图显示从用户发布的链接中提取的图像
【发布时间】:2015-12-26 20:18:30
【问题描述】:

这就是我想要做的。让用户发布 url,提交 url 并从用户发布的链接中提取主图像。显示该图像。我;在用户发布链接时提取了图像(感谢您修复错误)现在我只是试图显示图像

Media.py
import json import urllib2 from urllib2 import Request from goose import Goose
def get_content(url):
    """This function is intended to return content from url.
    :param url: URL to get content
    :return: The response from url
    """
    req = urllib2.Request(url, headers={'User-Agent': "Magic Browser"})
    response = urllib2.Request.urlopen(req).read()
    return response 


def extract(url):
    url = get_content(url)
    g = Goose()
    article = g.extract(url=url)
    resposne = {'image':article.top_image.src}
    return json.dumps(resposne)

views.py



    class PostCreateView(CreateView):

         model = Post
         form_class = PostForm
         template_name = 'main/add_post.html'

         def form_valid(self, form):
                self.object = form.save(commit=False)
                # any manual settings go here
                self.object.moderator = self.request.user
                url = self.request.GET.get('url')
                image = extract(url)
                self.object.save()
                return HttpResponseRedirect(reverse('post', args=[self.object.slug]))

         @method_decorator(login_required)
         def dispatch(self, request, *args, **kwargs):

                return super(PostCreateView, self).dispatch(request, *args, **kwargs)

def index(request):
        categories = Category.objects.all()

        try:
                sort = request.GET["sort"].strip()
                sort_method = SortMethods[sort]
                page = request.GET["page"].strip()
        except KeyError:
                sort_method = SortMethods.score
                page = 1

        if sort_method == SortMethods.date:
                thread_list = Post.objects.order_by("-pub_date")
        else:
                thread_list = Post.objects.all()
                thread_list = sorted(thread_list, key=lambda x: x.get_score(), reverse=True)

        paginator = Paginator(thread_list, 30)

        try:
                posts = paginator.page(page)
        except PageNotAnInteger:
                posts = paginator.page(1)
        except EmptyPage:
                posts = paginator.page(paginator.num_pages)

        context = {
                "posts": posts,
                "pages": paginator.page_range,
                "sort": sort_method.name,
                "categories":categories,

        }
        return render(request, "main/index.html", context)


Models.py 

    class Post(models.Model):
        category = models.ForeignKey(Category)
        pub_date = models.DateTimeField(auto_now_add = True)
        title = models.CharField(max_length = 100)
        content = FroalaField()
        url = models.URLField(max_length=250, blank=True, null=True)
        moderator = models.ForeignKey(User)
        rank_score = models.FloatField(default= 1)

        views = models.IntegerField(default=0)
        image = models.ImageField(upload_to="images",blank=True, null=True)
        slug = models.CharField(max_length=100, unique=True)

        objects = models.Manager()   


forms.py

class PostForm(forms.ModelForm):
    title = forms.CharField(max_length=128, help_text="plz enter")

    url = forms.URLField(max_length=200,
                         help_text="Please enter the URL of the page.", required=False)
    views = forms.IntegerField(widget=forms.HiddenInput(), initial=0)
    content = forms.CharField(widget=FroalaEditor)
    class Meta:
        model = Post

        exclude = ['pub_date', 'moderator', 'rank_score', 'image','slug']

【问题讨论】:

    标签: python django


    【解决方案1】:

    我没有看到您的 models.py 文件。所以我会这样做:

    1. 确保您的类中的 models.py 中有一个“列”,例如

      img = models.FileField(upload_to='static/your_directory/', null=True)

      没有“null=True”,Django 无法进行迁移。

    2. 提交后,Django 会将该图像放入提到的目录中。

    3. 设置上下文数据后在模板中渲染图像:

      your_object.img }}"> !!!不要忘记斜线!!!

    这是没有 AJAX 的设​​置。请阅读下面的 cmets 以获取更多信息,谢谢。

    【讨论】:

    • 为什么它有-1?感谢您的回答。我会发布我的models.py
    • 我不是要保存图像,我只是想让它们显示出来
    • 是的,对不起,英语不是我妈妈的语言。我经常使用上面的代码来显示数据库中的图像。所以我希望它能有所帮助。
    • 没关系,这不是我想要的。你能帮我么?这就是我正在寻找的,gooseextractor-t20.rhcloud.com 当用户发布 url 时,图像被提取并且该图像显示在 index.html
    • 是的,终于明白了。我认为使用了 AJAX 技术。如果我自己这样做,我会以 action="blablabla" 的形式使用。 Blalala 是一个 URL(视图中的一些功能),它在发布的 URL 中解析该图像 > 将图像发送到数据库 > 通过 AJAX 从数据库加载图像(不刷新)并将其呈现在“提取”按钮下方。这将是我的程序,但可能有不同的方法,谁知道? (我没有)
    猜你喜欢
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 2013-10-03
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多