在同一个vi中搜索和显示

2024-06-18 07:32:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Django,我想知道是否有更好的方法。基本上,我尝试从imdbpyapi获取电影并显示电影信息。到现在为止,我使用一个视图来获取信息并显示它(使用两个不同的模板)。这样做对吗?或者我应该把它分成两种不同的观点?如果是,我该怎么做

视图

def get_movie_name_view(request):
form = GetMovieName(request.POST or None)
if form.is_valid():
    ia = IMDb()
    movies = ia.get_movie(form.cleaned_data['movie_title'])
    context = {'title': movies['title'],
               'directors': movies['directors'],
               'runtime': movies['runtime'],
               'year': movies['year'],
               'genre': movies['genres'],
               'form': form
               }
    return render(request, 'show_movie_info.html',context)
context = {
    'form': form
}
return render(request, 'get_movie_name.html', context)

型号

class Movie(models.Model):
  title = models.CharField(max_length=250)
  directors = models.CharField(max_length=300)
  runtime = models.IntegerField()
  year = models.DateField()
  genre = models.CharField(max_length=100)

表格

class GetMovieName(forms.Form):
movie_title = forms.CharField(label='Movie Title', max_length=100)

获取电影模板

{%  extends 'base.html' %}

{% block content %}
    <form method="POST"> {% csrf_token %}
        {{form.as_p}}
    <input type="submit", value="Submit" />
    </form>
{%  endblock %}

显示电影模板

{%  extends 'base.html' %}

{% block content %}
    <p> Title: {{ title }} </p>
    <p> Duration: {{ runtime }} minutes </p>
    <p> Director: {{ directors }} </p>
    <p> Year: {{ year }} </p>
    <p> Genre: {{ genre }}</p>


{%  endblock %}

Tags: form电影titlemodelsrequesthtmlcontextmovies
1条回答
网友
1楼 · 发布于 2024-06-18 07:32:17

我做了一些改变

def get_movie_name_view(request):
    form = GetMovieName(request.POST or None)
    # ensure the request is a post
    if request.method == 'POST':
        if form.is_valid():
            ia = IMDb()
            movies = ia.get_movie(form.cleaned_data['movie_title'])
            context = {'title': movies['title'],
                       'directors': movies['directors'],
                       'runtime': movies['runtime'],
                       'year': movies['year'],
                       'genre': movies['genres'],
                       'form': form
                       }
            return render(request, 'show_movie_info.html',context)
    # ensure request is a GET
    if request.method == 'GET':
        context = { 'form': form }
        return render(request, 'get_movie_name.html', context)

相关问题 更多 >